./0040755000151400015140000000000007404202113010166 5ustar phallphall./doc/0040755000151400015140000000000007404201515010740 5ustar phallphall./doc/lplots.hlp0100644000151400015140000002230607404201076012764 0ustar phallphall.help lplots Dec00 phist .ih NAME lplots -- overplot wavelengths of emission / absorption lines for given z .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of observation .le .ls fiber Fiber number (leading zeros optional) .le .ls z Redshift .le .ls z2=0. Secondary Redshift .le .ls primary="both" Primary z is for (em|abs|both) .le .ls fitsfile="" FITS spectrum to use .le .ls specfile="default" Observed-frame spectrum text file (column 1 wavelength, column 2 flux) to use (if it already exists) or save (if it doesn't). A value of "" (null string) will neither use an existing text file nor create a new one. A value of "default" will create a file called "sp0357_51813_509.obs" for plate 357, mjd 51813, and fiber 509. .le .ls plotfile="" IGI commands file to save. This will overwrite a preexisting file of the same name without prompting you if that's what you really want to do, so be careful. A value of "" (null string) should be used if you do not want to create a permanent IGI commands file. A value of "default" will create a file called "sp0357_51813_509_z2.118.igi" for plate 357, mjd 51813, fiber 509, and z=2.118; "sp0357_51813_509_z2.118_r2530_2650.igi" for the above plus "frame=rest start=2530 end=2650"; and "sp0357_51813_509_z2.118_o7700_9205.igi" for the above plus "frame=observed start=7700 end=9205". .le .ls absplot="strong" Plot absorption lines (choose: all|most|strong|feii|none|own)? .le .ls emplot="strong" Plot emission lines (choose: all|most|strong|sdss|none|own)? .le .ls ownelist="" Own list of emission lines .le .ls ownalist="" Own list of absorption lines .le .ls nightsky=no Plot wavelengths of strong night sky lines? .le .ls telluric=no Plot wavelengths of telluric absorption lines? .le .ls fakeplot=no Plot features that mimic emission lines, as seen in the CNOC2 spectra of spectroscopic early-type galaxies? .le .ls errplot=no Overplot 1-sigma error spectrum? .le .ls addlabel=no Add line identification labels to plot? .le .ls labelxoffset=0. x-axis offset for line ID labels .le .ls labelyoffset=0. y-axis offset for line ID labels .le .ls alternate=no Double y-axis offset for every other line ID label? .le .ls botlabel=yes Include descriptive label along the bottom of the plot? .le .ls lowerlim=no Set lower limit on y axis to minimum flux in spectrum instead of 0? .le .ls top=0. Maximum flux value to plot in units of 10^-17 erg/s/cm^2/Ang (0 for autoscaling) .le .ls startplot=0. Start wavelength for plot .le .ls endplot=0. End wavelength for plot .le .ls frameplot="neither" Frame in which start & end wavelengths are defined (allowed values: neither|observed|rest). The default value of "neither" means that the task plots the full range of observed wavelengths found in the spectrum. .le .ls schlegel=yes Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .ih DESCRIPTION The task requires the STSDAS package (for the IGI task which is used for plotting), and the following entry in your login.cl or loginuser.cl file: .nf task $cp = "$foreign" .fi .sp This task plots an SDSS spectrum with both observed frame and rest frame wavelengths (at the specified z) and overplots vertical lines at wavelengths of selected emission or absorption lines (or both): .sp .nf dotted lines for emission, dashed lines for absorption, dot-dash lines for telluric absorption and/or features in early-type galaxy spectra which empirically mimic emission lines, solid lines for night sky emission at 5577, 5892, and 6300 Angstroms. .fi .sp I use this task both for quick-look purposes and for creating IGI macros for complex publication quality plots, hence it has many options. Here is a quick overview. .sp If you have an archive of SDSS spectroscopic data on disk, set the "schlegel", "idlspec2d" and "spectro1d" parameters appropriately ("idlspec2d" is the old name for "SpecBS") and then use the "plate", "mjd" and "fiber" parameters to access the data directly. Alternatively, "fitsfile" lets you use an arbitrarily named fits file, but you have to use the null string for the first three parameters: lplots "" "" "" [z] fitsfile=[name] .sp The default option is to use a 3-column text file ("specfile") with observed wavelength, flux, and error. This file is created if needed; if you're using "fitsfile" you should also specify "specfile" to avoid confusion. The default is NOT to save the IGI commands file, however, so set "plotfile" to "default" or a filename if you do want to save it. .sp The default option plots both `strong' emission and absorption lines (see REFERENCES below). Use "absplot" and "emplot" to change either of these to "most" lines, "all" lines, "none", or "feii" (absorption) or "sdss" (emission). The latter plots only emission lines seen in the Vandenberk et al. 2001 SDSS quasar composite. You can also use "own" to use your own line list for either emission ("ownelist") or absorption ("ownalist"). .sp If you want to plot only part of the spectrum, change "frameplot" to `rest' or `observed' (the default of `neither' plots the full spectrum) and then set "startplot" and "endplot" appropriately. .sp You can also plot emission and absorption at different redshifts by setting "primary" appropriately (this determines the top axis labelling) and making "z2" nonzero. For example, "lplots z=1.23 primary=em z2=1.11" plots emission lines at wavelengths corresponding to redshift 1.23 (and labels the top axis for that redshift) but absorption lines at redshift 1.11. Alternatively, "lplots z=1.11 primary=ab z2=1.23" makes the same plot except with the top axis labelled for redshift 1.11. .sp You can adjust the plot by overplotting the error spectrum ("errplot"), adding line IDs ("addlabel", "labelxoffset", "labelyoffset", "alternate"), removing the descriptive label below the bottom of the plot ("botlabel"), or changing the top and bottom limits ("lowerlim" and "top"). .ih REFERENCES The line lists used, including IDs, are found in the following files, which are stored in the PHIST home directory: .sp .nf ll_strabs strong absorption lines (43) [MYJ88tab4 + a few others] ll_mostabs most absorption lines (111) [MYJ88] ll_allabs all absorption lines (199) ll_feiiabs FeII lines (364) [all >1215Ang. Moore multiplets thru UV111] ll_strem strong emission lines (55) ll_mostem most emission lines (153) [non-LAF80] ll_allem all emission lines (223) ll_sdssem SDSS quasar composite emission lines (76) .fi .sp The format of the ll_* files is Wavelength (in Angstroms) in column 1, and comma-separated identifier in column 2. The identifier MUST contain at least one comma, even if it's just tacked on the end. Characters before the first comma in the identifier are output to the graph if addlabel=yes (any oddities you see are IGI formatting or fonting commands). The remainder of the identifier is simply for reference, but SPACES ARE NOT OK in the identifier unless they are followed by a comment (#). For doublets & other multiplets, typically only the bluest line is labelled. The following is a guide to the notation used (somewhat haphazardly) in the ll_* files and to the references used to construct them: .sp .nf ",*" means stellar photospheric ",i" means interstellar absorption ",a" means absorption ",e" means emission ",e,AAQ00" means Table 24.6 of Allen's Astrophysical Quantities (2000): wavelengths in vacuo for < 2000 Ang & in air for > 2000 Ang "e,LAF80" means Table 15 of Lang's Astrophysical Formulae (1980) "a,LAF80" means Table 16 of Lang's Astrophysical Formulae (1980) ",Bahcall" means the lines & wavelengths come from Bahcall et al's paper on the HST QSO Absorption Line Key Project (Table 7) ",Bahcall+" means the lines but come from that paper but the wavelengths from the paper after the "+" ",MYJ88tab4" means Table 4 (strong lines) of Morton et al 1988, ApJS 68, 449 ",OSTp#" means Osterbrock "Astrophys. Gas. Neb. & AGN", p. # ",cB58" means Pettini et al. 2000, ApJ 528, 96 ",wDVB" means wavelength comes from Vandenberk et al 2001, AJ 122, 549 (for lambda > 2000 Ang transitions only) References used: Arav99: Arav et al 1999, ApJ 516, 27 Baldwin et al 1977, A&A 61, 165 (predicted 2 boron lines) Francis et al 1991, ApJ 373, 465 Moore, C. E.: various multiplet tables (for Fe I-III, He I-II) MYJ88: Morton et al 1988, ApJS 68, 449 OST: Osterbrock "Astrophys. Gas. Neb. & AGN" cB58: Pettini et al. 2000, ApJ 528, 96 Sandage 1978, AJ 83, 904 Songaila et al 1994, ApJS 94, 461 DVB: Vandenberk et al 2001, AJ 122, 549 .fi .ih SEE ALSO doigi, lplots2, vplot, vplots, zplot .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/sbqsx.hlp0100644000151400015140000000363107403675710012620 0ustar phallphall.help sbqsx Dec00 phist .ih NAME sbqsx -- task to format SX output for Sloan Bright Quasar survey .ih PARAMETERS .ls tblname Name of SX query output table (WITHOUT .tbl extension) .le .ls sortmag Sort reformatted table on what magnitude? .le .ls countfile="" Output size of reformatted table to what file? .le .ih DESCRIPTION The task requires the CTIO package and the following entry in your login.cl or loginuser.cl file: .nf task $paste = "$foreign" .fi This task is intended as an example task showing how to manipulate, sort, and format SX output using the ctio.filecalc task in IRAF. This task takes SX query output ASCII tables with columns ordered as follows: .nf 1 2 3 4 5 6 7 run camCol rerun field objID ra dec \\ 8 9 10 11 12 13 14 15 16 17 umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ 18 19 20 21 22 upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ 23 24 25 26 27 ucensat? gcensat? rcensat? icensat? zcensat? \\ 28 29 30 31 32 uflags gflags rflags iflags zflags \\ 33 34 35 36 37 uflags2 gflags2 rflags2 iflags2 zflags2 \\ 38 39 status objc_type and outputs an ASCII file with the following columns: 1 2 3 4 5 6 7 run camCol rerun field objID ra dec \\ 8 9 10 11 12 13 14 15 16 17 umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ 18 19 20 21 22 23 24 25 u-g ugerr g-r grerr r-i rierr i-z izerr \\ 26 27 28 29 30 upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ 31 32 33 34 35 ucensat? gcensat? rcensat? icensat? zcensat? \\ 36 37 38 39 40 uflags gflags rflags iflags zflags \\ 41 42 43 44 45 uflags2 gflags2 rflags2 iflags2 zflags2 \\ 46 47 status objc_type .fi .ih SEE ALSO sbqgr, sbqsx2 .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/sbqsx2.hlp0100644000151400015140000000364107403675677012717 0ustar phallphall.help sbqsx2 Dec00 phist .ih NAME sbqsx2 -- another task to format SX output for Sloan Bright Quasar survey .ih PARAMETERS .ls tblname Name of SX query output table (WITHOUT .tbl extension) .le .ls sortmag Sort reformatted table on what magnitude? .le .ls countfile="" Output size of reformatted table to what file? .le .ih DESCRIPTION The task requires the CTIO package and the following entry in your login.cl or loginuser.cl file: .nf task $paste = "$foreign" .fi This task is intended as an example task showing how to manipulate, sort, and format SX output using the ctio.filecalc task in IRAF. This task takes SX query output ASCII tables with columns ordered as follows: .nf 1 2 3 4 5 6 7 run camCol rerun field objID ra dec \\ 8 9 10 11 12 13 14 15 16 17 umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ 18 19 20 21 22 upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ 23 24 25 26 27 ucensat? gcensat? rcensat? icensat? zcensat? \\ 28 29 30 31 32 uflags gflags rflags iflags zflags \\ 33 34 35 36 37 uflags2 gflags2 rflags2 iflags2 zflags2 \\ 38 39 status objc_type and outputs an ASCII file with the following columns: 1 2 3 4 5 6 7 run camCol rerun field objID ra dec \\ 8 9 10 11 12 13 14 15 16 17 umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ 18 19 20 21 22 23 24 25 u-g ugerr g-r grerr r-i rierr i-z izerr \\ 26 27 28 29 30 upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ 31 32 33 34 35 ucensat? gcensat? rcensat? icensat? zcensat? \\ 36 37 38 39 40 uflags gflags rflags iflags zflags \\ 41 42 43 44 45 uflags2 gflags2 rflags2 iflags2 zflags2 \\ 46 47 status objc_type .fi .ih SEE ALSO sbqgr, sbqsx .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/splat.hlp0100644000151400015140000000405207404171243012572 0ustar phallphall.help splat Dec00 phist .ih NAME splat -- interactive SPLOT front end for SDSS spectra .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of Plate observation .le .ls fiber Fiber number (leading zeros optional) .le .ls datatype="data" Plot: data|err|contsub|and|or|dispersion|mask .le .ls schlegel=yes Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .le .ls echo=no Echo actual splot command? .ih DESCRIPTION This task is a front end to the "splot" task in IRAF, designed for use with reduced 1-dimensional SDSS spectra in either spectro1d or idlspec2d (SpecBS) format. See the help page for "splot" for details on its full capabilities. This task requires that the noao.onedspec package be loaded. Note that spectro1d and idlspec2d (SpecBS) spectra have different formats: .nf BAND idlspec2d/SpecBS spectro1d 0 data - 1 1/sigma^2 data 2 AND continuum-subtracted data 3 OR sigma 4 dispersion mask bits .fi The fact that spectra from the same plate are stored differently in the two formats means that: .nf in idlspec2d, you can browse all fibers in a plate, but you can't switch to the error spectrum etc. for any fibers; in spectro1d, you can switch to the error spectrum etc. for the fiber, but you can't browse any other fibers in the plate. .fi .ih SEE ALSO splet, lplots .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/phist.hlp0100644000151400015140000000712007404201274012573 0ustar phallphall.help phist Dec00 phist .ih NAME phist -- Pat Hall's IRAF SDSS Tasks .ih DESCRIPTION PHIST is an IRAF package of miscellaneous tasks for looking at SDSS data. It is still rudimentary and haphazard; the ways I want to use the tasks are still evolving, and therefore so are the tasks themselves (which leads to the existence of vestigal features that may be confusing or aggravating). Contact me with suggestions, or if you want to be informed about updates. PHIST is available as a gzipped tar file from: .nf http://astro.princeton.edu/~pathall/PHIST/phist2.tar.gz .fi .sp To install, enter the proper pathnames in "phist.cl" and "phist.hd", load the IRAF "softools" package, and type "mkhelpdb root.hd helpdb.mip", deleting the old helpdb.mip if necessary. You may also need to install the STSDAS and CTIO packages since some PHIST tasks require those packages; for the CTIO package see: .nf ftp://iraf.noao.edu/iraf/extern/ctio.readme .fi .sp Lastly, the following is also required in your login.cl or loginuser.cl file: .nf task $cp = "$foreign" # this line may already be in login.cl task $paste = "$foreign" .fi .sp Type "phist" in IRAF to load the package and list the individual task names, then type "help" to see a menu of tasks: .sp .nf PHIST --- Pat Hall's IRAF SSDSS Tasks dec2seg - convert decimal coordinates to sexigesimal doigi - run existing IGI script hexprint - convert a decimal number to hexadecimal ionlte - calculate LTE ratios of MgI-III,AlI-IV,FeI-IV for given n_e,T range lplots - overplot wavelengths of emission / absorption lines for given z lplots2 - 2-panel lplots mkfitsobs - make coadded FITS and text spectra mkobs - make text spectrum from FITS spectrum sbqgr - sample task for converting GR's SX .tbl output to formatted ASCII sbqsx - sample task for converting SX .tbl output to formatted ASCII sbqsx2 - another task for converting SX .tbl output to formatted ASCII seg2dec - convert sexigesimal coordinates to decimal spdata - get objid,mags,ra,dec,objtype from spectrum (plate,mjd,fiber) splat - interactively SPLOT a specific observation (plate+mjd+fiber) splet - non-interactively SPECPLOT an observation and its error spectrum unredden - deredden spectrum using SMC or LMC extinction curve vcalc - calculate velocity offset in quasar rest frame vplot - overplot wavelengths of emission/absorption lines in velocity space vplots - multiple vplot wcalc - calculate vacuum wavelength from air wavelength zplot - plot spectrum in the rest frame at the specified z .fi .sp See the help files for the individual tasks for further info. .sp To automatically load the PHIST and related packages every time you start IRAF, stick the following lines in your loginuser.cl file, changing the pathnames as appropriate: .sp .nf noao # optional but recommended for full functionality onedspec # optional but recommended for full functionality stsdas # optional but recommended for full functionality ctio # if installed at your institution. At Princeton: # set ctio = "/u/pathall/IRAF/CTIO/" # uncomment if needed # task $ctio = ctio$ctio.cl # reset helpdb = (envget ("helpdb") // ",ctio$lib/helpdb.mip") set phist = "/u/pathall/IRAF/PHIST/" task $phist = phist$phist.cl .fi .sp Other included files of interest: .sp .nf extlmc.fits LMC extinction curve for the unredden task extsmc.fits SMC extinction curve for the unredden task ll_* linelist files for the lplots.cl task sdss_qso_median.fits Vandenberk et al 2001 SDSS quasar composite spectrum sdss_qso_nolines.fits above spectrum with emission lines interpolated over .fi .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/splet.hlp0100644000151400015140000000373207404171265012606 0ustar phallphall.help splet Dec00 phist .ih NAME splet -- non-interactively plot an observation and its error spectrum .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of Plate observation .le .ls fiber Fiber number (leading zeros optional) .le .ls datatype="data" Plot: data|err|contsub|and|or|dispersion|mask .le .ls schlegel=no Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .le .ls lowerlim=no Plot from min. flux in spectrum instead of 0? .le .ls errplot=no Overplot error spectrum (spectro1d format only)? .le .ls echo=no Echo actual splot command? .ih DESCRIPTION This task is a front end to the "specplot" task in IRAF, designed to simultaneously (but non-interactively) plot a reduced 1-dimensional SDSS spectrum and its error spectrum. See the help page for "specplot" for details on its full capabilities. This task requires that the noao.onedspec package be loaded. CURRENTLY ERROR PLOTTING ONLY WORKS FOR SPECTRO1D FORMAT DATA! This is because idlspec2d (SpecBS) stores the inverse variance instead of the error spectrum directly (see the help page for the "splat" task). To plot errors for idlspec2d (SpecBS) format data, use the lplots task with z=0 em=none abs=none errplot+. .ih SEE ALSO splat, lplots .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/spdata.hlp0100644000151400015140000000306207404171211012716 0ustar phallphall.help spdata Dec00 phist .ih NAME spdata -- get SDSS object data from spectrum .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of Plate observation .le .ls fiber Fiber number (leading zeros optional) .le .ls schlegel=no Use idlspec2d (SpecBS) format Spectro data? .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .ih DESCRIPTION This task takes a given plate, mjd, and fiber number and outputs: .nf plate mjd fiber run rerun camcol field objnum ra dec u g r i z objtype .fi CURRENTLY THE TASK WORKS FOR SPECTRO1D FORMAT DATA ONLY! This is because idlspec2d (SpecBS) does not store the object info in the same file as the spectrum. Instead, if idlspec2d is chosen (schlegel=yes), currently the task assumes there is a spectro1d format FITS file in the current directory, and it attempts to extract the object info from such a file. .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/dec2seg.hlp0100644000151400015140000000165207404165372012774 0ustar phallphall.help dec2seg Dec00 phist .ih NAME dec2seg - convert decimal coordinates to sexigesimal .ih PARAMETERS .ls ra Right Ascension in decimal degrees .le .ls dec Declination in decimal degrees .le .ls coords="" File of coordinates to convert .le .ls numra=2 Number of output decimal places in RA .le .ls numdec=1 Number of output decimal places in DEC .le .ls format=yes Format output all nice and neat? .le .ih DESCRIPTION This task converts a pair of RA & DEC coordinates (or a list of such) into their sexigesimal equivalents (hh:mm:ss.ss dd:mm:ss.s). If you have a list of coordinates to convert, use "dec2seg coords=filename"; otherwise, you can enter the RA & DEC or let the task prompt you for them. .ih SEE ALSO seg2dec .ih BUGS 1. format=yes WILL NOT WORK CORRECTLY for declination <= -10 degrees .sp 2. task WILL FAIL if any input declination includes a plus sign .sp Please report any others to pathall@astro.princeton.edu .endhelp ./doc/sbqgr.hlp0100644000151400015140000000127507403675666012612 0ustar phallphall.help sbqgr Dec00 phist .ih NAME sbqsx2 -- task to format GR's SX output for Sloan Bright Quasar survey .ih PARAMETERS .ls tblname Name of SX query output table (WITHOUT .tbl extension) .le .ls sortmag Sort reformatted table on what magnitude? .le .ls countfile="" Output size of reformatted table to what file? .le .ih DESCRIPTION The task requires the CTIO package and the following entry in your login.cl or loginuser.cl file: .nf task $paste = "$foreign" .fi This task is intended as an example task showing how to manipulate, sort, and format SX output using the ctio.filecalc task in IRAF. .ih SEE ALSO sbqsx, sbqsx2 .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/seg2dec.hlp0100644000151400015140000000164707404165731012777 0ustar phallphall.help seg2dec Dec00 phist .ih NAME seg2dec.cl -- convert sexigesimal coords to decimal .ih PARAMETERS .ls ra Right Ascension in decimal degrees .le .ls dec="" Declination in decimal degrees. A plus sign for northern declinations is optional, but if it is included, the declination MUST be enclosed in quotes. .le .ls coords="" File of coordinates to convert .le .ls numra=6 Number of output decimal places in RA .le .ls numdec=6 Number of output decimal places in DEC .le .ls plus=yes Output plus sign for Declination > 0? .le .ih DESCRIPTION This task converts a pair of sexigesimal RA & DEC coordinates in the format hh:mm:ss.ss dd:mm:ss.s (or a list of such) into their decimal equivalents. If you have a list of coordinates to convert, use "seg2dec coords=filename"; otherwise, you can enter the RA & DEC or let the task prompt you for them. .ih SEE ALSO dec2seg .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/doigi.hlp0100644000151400015140000000061107404166125012542 0ustar phallphall.help doigi Dec00 phist .ih NAME doigi -- run existing IGI script .ih PARAMETERS .ls igifile Existing file of igi commands .le .ih DESCRIPTION The task runs an existing IGI script. Usually the same can be done with "igi < igifile", but that doesn't always work, hence this task. .ih SEE ALSO lplots, lplots2, vplot, vplots .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/hexprint.hlp0100644000151400015140000000112507404166743013317 0ustar phallphall.help hexprint Dec00 phist .ih NAME hexprint.cl -- decode a hex-encoded number .ih PARAMETERS .ls number Hex-encoded decimal number to convert back to hexadecimal .le .ih DESCRIPTION The SDSS database stores many numbers in hexadecimal format, where each digit has values from 0 to F (15), each representing a different type of targeting flag, for example. These numbers are often stored as decimal numbers, however. This task converts from decimal to hexidecimal, thus enabling the target flags (or whatever) to be deciphered. .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/mkfitsobs.hlp0100644000151400015140000000601007404201514013437 0ustar phallphall.help mkfitsobs Dec00 phist .ih NAME mkfitsobs -- make coadded FITS and text spectrum .ih PARAMETERS .ls speclist This files listing the spectra to be coadded, one per line, as "format spectrum_fits_file error_spectrum_fits_file". The "format" string MUST be either "c1d", "p1d", "lin", or "log". The latter two are standard IRAF multispec files with linear or logarithmic wavelength scales. The former two indicate Chicago 1-D (spectro1d) or Princeton 1-D (idlspec2d/SpecBS) formats. Separate fits files can be listed for the flux and error spectra, or both can be taken from data stored on disk; in the latter case, use 'plate,mjd,fiber' for the second column and the null string "" for the third column. .le .ls outfits ROOT name for output spectrum FITS files. .le .ls specfile="" FULL name of output spectrum text file. .le .ls normalize=no Normalize spectrum text file by 1E-17 ergs/s/cm^2/Ang? .le .ls idlspec2d Path of specBS format Spectro data (include trailing /). You can set this pathname to "." or "" to indicate the current directory. .le .ls spectro1d Path of spectro1d format Spectro data (include trailing /) You can set this pathname to "." or "" to indicate the current directory. .le .ls smooth Boxcar smooth by how many pixels? .le .ih DESCRIPTION This task creates coadded FITS and text spectra with error arrays. The input file format takes some getting used to, but the strength of this task is that it enables you to combine spectro1d, specBS, and other format spectra. .sp The file 'speclist' lists the spectra to be coadded, one per line, as 'format spectrum_fits_file error_spectrum_fits_file'. The format string MUST be either 'c1d', 'p1d', 'lin', or 'log'. For example, the following is the input file 'xbal0338p0056.in' for the BAL quasar SDSS 0338+0556: .sp .nf c1d edr415_51810_617 "" # spectro1d previously downloaded from EDR website c1d 416,51811,326 "" # spectro1d stored on disk somewhere p1d 415,51879,610 "" # specBS stored on disk somewhere p1d p1d416_51885_324 p1d416_51885_324invar # specBS copied to 1D fits files .fi .sp If the FITS file is a standard IRAF multispec file (format=log or format=lin depending on the pixel wavelength units), or a standard SDSS spectro1d format=c1d (Chicago1D) or specBS format=p1d (Princeton1D) file, then using "" for the error array will work correctly. If you specify the error array instead, you must specify it EXACTLY, e.g. "x.fits[0][*,2]". If you have two one-dimensional FITS files, one with the spectrum and one with the error array, use format=c1d, that will work correctly. .sp Continuing the example above, 'outfits' gives the ROOT name for the output FITS flux and error spectra, so 'outfits=xbal0338p0056' will create 'xbal0338p0056.fits' and 'xbal0338p0056err.fits'. 'specfile' is the FULL name for the output spectrum text file, but 'specfile=""' will create a default file of outfits//".obs", e.g. 'xbal0338p0056.obs'. .sp This task requires the ctio and noao.onedspec packages. .ih SEE ALSO mkobs .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/ionlte.hlp0100644000151400015140000000221307404167722012745 0ustar phallphall.help ionlte Dec00 phist .ih NAME ionlte -- calculate LTE ratios of MgI-III,AlI-IV,FeI-IV for given n_e,T ranges .ih PARAMETERS .ls nelow=1e6 Lowest electron density for computation .le .ls nehigh=1e11 Highest electron density for computation .le .ls tlow=5040 Lowest temperature for computation .le .ls thigh=35280 Highest temperature for computation .le .ls nstep=0.5 Logarithmic step size for electron density .le .ls tstep=5040 Step size for temperature .le .ih DESCRIPTION This task calculates the LTE ratios of the abundance ratios FeII/FeI, FeIII/FeI, FeIV/FeI, MgII/MgI, MgIII/MgI, AlII/AlI, AlIII/AlI and AlIV/AlI within given ranges of the electron density and temperature. The output format is: .nf log10(n_e) T fe21 fe31 fe41 mg21 mg31 al21 al31 al41 ok? 1 2 3 4 5 6 7 8 9 10 11 .fi (The "ok?" column can be ignored, or adjusted in the task itself.) .sp This task is of marginal use, except maybe for to get a very rough grasp on what the conditions in the gas are. If you really want to know what's going on, use CLOUDY. .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/mkobs.hlp0100644000151400015140000000232507404177273012574 0ustar phallphall.help mkobs Dec00 phist .ih NAME mkobs -- make text spectrum from FITS spectrum .ih PARAMETERS .ls fitsfile Root name of FITS spectrum (no extension) .le .ls errfile="" Root name of FITS error array .le .ls specfile="" Observed spectrum text file to create .le .ls format="c1d" Format (c1d|p1d|lin|log) .le .ls normalize=no Normalize spectra by 1E-17 ergs/s/cm^2/Angstrom? .le .ls smooth=1 Boxcar smooth by how many pixels? .le .ih DESCRIPTION This task creates a 3-column text file containing wavelength, flux, error array. .sp If the FITS file ('fitsfile') is a standard IRAF multispec file (format=log or format=lin depending on the pixel wavelength units), or a standard SDSS spectro1d format=c1d (Chicago1D) or specBS format=p1d (Princeton1D) file, then using "" for the error array will work correctly. If you specify the error array instead, you must specify it EXACTLY, e.g. "x.fits[0][*,2]". If you have two one-dimensional FITS files, one with the spectrum and one with the error array, using format=c1d will work correctly. If you have no error array, just use the name of the spectrum again. .sp This task requires the ctio package. .ih SEE ALSO mkfitsobs .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/unredden.hlp0100644000151400015140000000300107404201067013242 0ustar phallphall.help unredden Dec00 phist .ih NAME unredden -- deredden spectrum using SMC or LMC extinction curve .ih PARAMETERS .ls fitsfile Root name of FITS spectrum (no extension) .le .ls errfile="" Root name of FITS error array .le .ls ebv=0.3 E(B-V) color excess .le .ls z=0 Redshift at which reddening occurs .le .ls extype="smc" Extinction curve to use (smc|lmc) .le .ls prefix="" Prefix for output spectra .le .ls format="c1d" Format (c1d|log) .le .ls quasar="none" Quasar Composite to divide by (median|nolines|none) .le .ls largered=7 Large reddening workaround (7 limits to >1000 Ang)? .le .ih DESCRIPTION This procedure dereddens a spectrum by the given E(B-V) value at the given redshift, using an SMC or LMC extinction curve (for MW extinction curve dereddening use the IRAF task "deredden"). Optionally the task will divide the dereddened spectrum by the SDSS composite quasar, or by the composite with strong broad emission lines removed. .sp If the FITS file is a standard IRAF multispec file WITH LOG WAVELENGTH PIXELS (format=log), or a standard SDSS spectro1d (Chicago1D) file (format=c1d), then using errfile="" will extract the error array correctly. .sp If you have two one-dimensional FITS files WITH LOG WAVELENGTH PIXELS, one with the spectrum and one with the error array (e.g. extracted from a specBS Princeton1D FITS file), use format=c1d and it will work correctly. .ih BUGS 1. format=p1d + errfile!="" mode is untested .sp Please report any others to pathall@astro.princeton.edu .endhelp ./doc/zplot.hlp0100644000151400015140000000344507404200322012613 0ustar phallphall.help zplot Dec00 phist .ih NAME zplot -- plot spectrum in the rest frame at the specified z .ih .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of Plate observation .le .ls fiber Fiber number (leading zeros optional) .le .ls z=0 Plot spectrum in rest frame at this redshift .le .ls datatype="data" Plot: data|err|contsub|and|or|dispersion|mask .le .ls schlegel=no Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .le .ls echo=no Echo actual splot command? .ih DESCRIPTION This task is a front end to the "splot" task in IRAF. It takes a reduced 1-dimensional SDSS spectrum in spectro1d format and plots it in the rest frame at the redshift specified by the "z" parameter. For z=0, the SDSS pipeline redshift stored in the header is used (note that this redshift may be low confidence or rejected). .sp See the help page for "splot" for details on that task's full capabilities. This task requires that the noao.onedspec package be loaded. .ih SEE ALSO lplots, lplots2, splat, vplot, vplots .ih BUGS 1. Works only for spectro1d format data. .sp Please report any others to pathall@astro.princeton.edu .endhelp ./doc/wcalc.hlp0100644000151400015140000000140007404176622012540 0ustar phallphall.help wcalc Dec00 phist .ih NAME wcalc -- calculate vacuum wavelength from air wavelength .ih PARAMETERS .ls air Air wavelength in Angstroms .le .ih DESCRIPTION This task converts an air wavelength into a vacuum wavelength. Quoting directly from Morton 1991, ApJS, 77, 119: "The IAU standard for conversion between air and vacuum wavelengths is, according to Oosterhoff (1957) and Elden (1953), .nf (l_vac - l_air)/l_air = (n - 1) = 6.4328e-5 + 2.94981e-2/(146 - sig**2) + 2.5540e-4/(41 - sig**2) .fi where sig = 1e4/l, with l in angstroms." The formula is intended for use only at >1600 Angstroms; the task warns about this if needed. .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/vcalc.hlp0100644000151400015140000000127407404176320012543 0ustar phallphall.help vcalc Dec00 phist .ih NAME vcalc -- calculate velocity offset in quasar rest frame .ih PARAMETERS .ls zem Emission Redshift .le .ls zabs Absorption Redshift .le .ls zemerr=0 Emission Redshift Uncertainty .le .ls zabserr=0 Absorption Redshift Uncertainty .le .ih DESCRIPTION This task takes a redshift (nominally from emission) and calculates, in that frame, the velocity offset corresponding to a second (absorption) redshift. The velocity uncertainty is also calculated. Both of these formulae are given in Hall et al. (2002), SDSS paper 123. The velocity offset formula is originally from Foltz et al. 1986, ApJ, 307, 504. .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/lplots2.hlp0100644000151400015140000000764207404171044013055 0ustar phallphall.help lplots2 Dec00 phist .ih NAME lplots2 -- 2-panel version of lplots .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of observation .le .ls fiber Fiber number (leading zeros optional) .le .ls z Redshift .le .ls specfile="default" Observed-frame spectrum text file (column 1 wavelength, column 2 flux) to use (if it already exists) or save (if it doesn't). A value of "" (null string) will neither use an existing text file nor create a new one. A value of "default" will create a file called "sp0357_51813_509.obs" for plate 357, mjd 51813, and fiber 509. .le .ls plotfile="" IGI commands file to save. This will overwrite a preexisting file of the same name without prompting you if that's what you really want to do, so be careful. A value of "" (null string) should be used if you do not want to create a permanent IGI commands file. A value of "default" will create a file called "sp0357_51813_509_z2.118.igi" for plate 357, mjd 51813, fiber 509, and z=2.118; "sp0357_51813_509_z2.118_r2530_2650.igi" for the above plus "frame=rest start=2530 end=2650"; and "sp0357_51813_509_z2.118_o7700_9205.igi" for the above plus "frame=observed start=7700 end=9205". .le .ls absplot="strong" Plot absorption lines (choose: all|most|strong|feii|none|own)? .le .ls emplot="strong" Plot emission lines (choose: all|most|strong|sdss|none|own)? .le .ls ownelist="" Own list of emission lines .le .ls ownalist="" Own list of absorption lines .le .ls nightsky=no Plot wavelengths of strong night sky lines? .le .ls telluric=no Plot wavelengths of telluric absorption lines? .le .ls fakeplot=no Plot features that mimic emission lines, as seen in the CNOC2 spectra of spectroscopic early-type galaxies? .le .ls errplot=no Overplot 1-sigma error spectrum? .le .ls addlabel=no Add line identification labels to plot? .le .ls lowerlim=no Set lower limit on y axis to minimum flux in spectrum instead of 0? .le .ls top=0. Maximum flux value to plot in units of 10^-17 erg/s/cm^2/Ang (0 for autoscaling) .le .ls startplot=0. Start wavelength for plot .le .ls splitwave=0. Wavelength at which to split plot for the two panels (if 0, split in half) .le .ls endplot=0. End wavelength for plot .le .ls mid=0. Maximum flux value for the bottom half (only if top!=0 too). 0 for autoscaling. .le .ls frameplot="neither" Frame in which start & end wavelengths are defined (allowed values: neither|observed|rest). The default value of "neither" means that the task plots the full range of observed wavelengths found in the spectrum. .le .ls schlegel=yes Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .ih DESCRIPTION The task requires the STSDAS package (for the IGI task which is used for plotting), and the following entry in your login.cl or loginuser.cl file: .nf task $cp = "$foreign" .fi .sp This task is an offshoot of lplots which splits the spectrum into two panels and plots it with both observed frame and rest frame wavelength labels (at the specified z) and overplots vertical lines at wavelengths of selected emission or absorption lines (or both). See the help page for lplots for details, but note that lplots2 does not have the full functionality of lplots. .ih SEE ALSO doigi, lplots, vplot, vplots, zplot .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/vplot.hlp0100644000151400015140000000716607404171275012631 0ustar phallphall.help vplot Dec00 phist .ih NAME vplot -- overplot wavelengths of emission / absorption lines in velocity space .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of observation .le .ls fiber Fiber number (leading zeros optional) .le .ls z Redshift .le .ls wavezero Rest wavelength of zero velocity .le .ls specfile="default" Observed-frame spectrum text file (column 1 wavelength, column 2 flux) to use (if it already exists) or save (if it doesn't). A value of "" (null string) will neither use an existing text file nor create a new one. A value of "default" will create a file called "sp0357_51813_509.obs" for plate 357, mjd 51813, and fiber 509. .le .ls plotfile="" IGI commands file to save. This will overwrite a preexisting file of the same name without prompting you if that's what you really want to do, so be careful. A value of "" (null string) should be used if you do not want to create a permanent IGI commands file. A value of "default" will create a file called "sp0357_51813_509_z2.118.igi" for plate 357, mjd 51813, fiber 509, and z=2.118; "sp0357_51813_509_z2.118_r2530_2650.igi" for the above plus "frame=rest start=2530 end=2650"; and "sp0357_51813_509_z2.118_o7700_9205.igi" for the above plus "frame=observed start=7700 end=9205". .le .ls absplot="strong" Plot absorption lines (choose: all|most|strong|feii|none|own)? .le .ls emplot="strong" Plot emission lines (choose: all|most|strong|sdss|none|own)? .le .ls errplot=no Overplot 1-sigma error spectrum? .le .ls lowerlim=no Set lower limit on y axis to minimum flux in spectrum instead of 0? .le .ls startplot=-25000. Starting velocity in km/s (or wavelength if frameplot!=velocity) for plot .le .ls endplot=5000. Ending velocity in km/s (or wavelength if frameplot!=velocity) for plot .le .ls frameplot="velocity" Frame in which startplot & endplot are defined (allowed values: velocity|observed|rest). .le .ls schlegel=yes Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .ih DESCRIPTION The task requires the STSDAS package (for the IGI task which is used for plotting), and the following entry in your login.cl or loginuser.cl file: .nf task $cp = "$foreign" .fi .sp This task plots an object spectrum in velocity space and overplots vertical lines at the positions of spectral features for the given redshift: dotted lines for emission and dashed lines for absorption. The line lists used, including IDs, are listed in the help page for lplots. .sp Typically I use this to plot a range of velocities ("startplot" to "endplot") around a given wavelength ("wavezero"), but you can also plot a given wavelength range by setting "frameplot" to `rest' or `observed'. The axis labels will still be in velocity space measured from "wavezero", of course. .sp See the help page for lplots for further details, but note that vplot does not have the full functionality of lplots. .ih SEE ALSO doigi, lplots, lplots2, vplots, zplot .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./doc/vplots.hlp0100644000151400015140000000755207404171302013002 0ustar phallphall.help vplots Dec00 phist .ih NAME vplots -- multiple vplot .ih PARAMETERS .ls plate Plate number (NO LEADING ZEROS) .le .ls mjd Modified Julian Date of observation .le .ls fiber Fiber number (leading zeros optional) .le .ls z Redshift .le .ls wavezero Rest wavelength of zero velocity .le .ls specfile="default" Observed-frame spectrum text file (column 1 wavelength, column 2 flux) to use (if it already exists) or save (if it doesn't). A value of "" (null string) will neither use an existing text file nor create a new one. A value of "default" will create a file called "sp0357_51813_509.obs" for plate 357, mjd 51813, and fiber 509. .le .ls plotfile="" IGI commands file to save. This will overwrite a preexisting file of the same name without prompting you if that's what you really want to do, so be careful. A value of "" (null string) should be used if you do not want to create a permanent IGI commands file. A value of "default" will create a file called "sp0357_51813_509_z2.118.igi" for plate 357, mjd 51813, fiber 509, and z=2.118; "sp0357_51813_509_z2.118_r2530_2650.igi" for the above plus "frame=rest start=2530 end=2650"; and "sp0357_51813_509_z2.118_o7700_9205.igi" for the above plus "frame=observed start=7700 end=9205". .le .ls absplot="strong" Plot absorption lines (choose: all|most|strong|feii|none|own)? .le .ls emplot="strong" Plot emission lines (choose: all|most|strong|sdss|none|own)? .le .ls errplot=no Overplot 1-sigma error spectrum? .le .ls lowerlim=no Set lower limit on y axis to minimum flux in spectrum instead of 0? .le .ls startplot=-25000. Starting velocity in km/s (or wavelength if frameplot!=velocity) for plot .le .ls endplot=5000. Ending velocity in km/s (or wavelength if frameplot!=velocity) for plot .le .ls frameplot="velocity" Frame in which startplot & endplot are defined (allowed values: velocity|observed|rest). .le .ls schlegel=yes Use idlspec2d (SpecBS) format Spectro data? .le .ls idlspec2d="/u/dss/data/2d_v4/" Path of idlspec2d (SpecBS) format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ####/spPlate-####-DDDDD.fits, where #### is the four-digit plate code (including leading zeros) and DDDDD is the five-digit MJD. .le .ls spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" Path of spectro1d format Spectro data (include trailing /). The assumed directory and filename structure beyond this point is ###/spSpec-DDDDD-###-FFF.fit, where ### is the three or four-digit plate code (no leading zeros), DDDDD is the five-digit MJD, and FFF is the three-digit fiber code (including leading zeros). .ih DESCRIPTION The task requires the STSDAS package (for the IGI task which is used for plotting), and the following entry in your login.cl or loginuser.cl file: .nf task $cp = "$foreign" .fi .sp This adaptation of vplot plots several regions of an object spectrum in velocity space and overplots vertical lines at the positions of spectral features for the given redshift: dotted lines for emission and dashed lines for absorption. The line lists used, including IDs, are listed in the help page for lplots. .sp This task plots the same range of velocities ("startplot" to "endplot") around several different wavelengths (from the "wavezero" string). That is, "wavezero" is a return-separated string of transitions you wish to overplot: .nf e.g. for CIV1549 on the bottom and MgII2798 on top, and autoscaling, use wavezero="1549 0 0 \n 2798 0 0" For plotfile="default" this creates sp0374_51791_136_v1.47548_1549_2798.igi (for example). If you don't want to autoscale, replace "0 0" with "ymin ymax", e.g. wavezero="1549 0 100\n2798 50 150" .fi .sp See the help page for lplots for further details, but note that vplots does not have the full functionality of lplots. .ih SEE ALSO doigi, lplots, lplots2, vplots, zplot .ih BUGS Please report any to pathall@astro.princeton.edu .endhelp ./sbqsx.cl0100644000151400015140000000731107213267121011655 0ustar phallphallprocedure sbqsx(tblname,sortmag) # sbqsx.cl -- task to format SX output for Sloan Bright Quasar survey # # REQUIRES # --ctio package # --the following in your login.cl or loginuser.cl : # task $paste = "$foreign" # # REQUIRES SX query output table column order as follows: # 1 2 3 4 5 6 7 # run camCol rerun field objID ra dec \\ # 8 9 10 11 12 13 14 15 16 17 # umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ # 18 19 20 21 22 # upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ # 23 24 25 26 27 # ucensat? gcensat? rcensat? icensat? zcensat? \\ # 28 29 30 31 32 # uflags gflags rflags iflags zflags \\ # 33 34 35 36 37 # uflags2 gflags2 rflags2 iflags2 zflags2 \\ # 38 39 # status objc_type # # this task output table column order: # 1 2 3 4 5 6 7 # run camCol rerun field objID ra dec \\ # 8 9 10 11 12 13 14 15 16 17 # umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ # 18 19 20 21 22 23 24 25 # u-g ugerr g-r grerr r-i rierr i-z izerr \\ # 26 27 28 29 30 # upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ # 31 32 33 34 35 # ucensat? gcensat? rcensat? icensat? zcensat? \\ # 36 37 38 39 40 # uflags gflags rflags iflags zflags \\ # 41 42 43 44 45 # uflags2 gflags2 rflags2 iflags2 zflags2 \\ # 46 47 # status objc_type # # 001118: created by PBH string tblname {prompt="Name of SX query output table (WITHOUT .tbl extension"} string sortmag {enum="u|g|r|i|z",prompt="Sort reformatted table on what magnitude?"} string countfile="" {prompt="Output size of reformatted table to what file?"} struct *list begin string mesanombre, alaclasemag, temporal, cuenta, intermedio, uno, dos string nombremesa int uf1, gf1, rf1, if1, zf1, uf2, gf2, rf2, if2, zf2, st, ot mesanombre = tblname nombremesa = mesanombre//".tbl" alaclasemag = sortmag cuenta = countfile intermedio = mesanombre//".sbq" temporal = mktemp("temp") uno = mktemp("tempuno") dos = mktemp("tempdos") #--create comments file grep ("'#'", nombremesa, >> mesanombre//".comments") #--create & count intermediate file filecalc (nombremesa, "$1;$2;$3;$4;$5;$6;$7;$8;$9;$10;$11;$12;$13;$14;$15;$16;$17;$8-$10;sqrt($9**2.+$11**2.);$10-$12;sqrt($11**2.+$13**2.);$12-$14;sqrt($13**2.+$15**2.);$14-$16;sqrt($15**2.+$17**2.);min(1,$18);min(1,$19);min(1,$20);min(1,$21);min(1,$22);min(1,$23);min(1,$24);min(1,$25);min(1,$26);min(1,$27)", format="%4d %1d %2d %5d %5d %11.7f %11.7f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %1d %1d %1d %1d %1d %1d %1d %1d %1d %1d %1d", >> uno) fields (nombremesa, "28-39", >> temporal) list = temporal while (fscan (list,uf1,gf1,rf1,if1,zf1,uf2,gf2,rf2,if2,zf2,st,ot) !=EOF) { printf ("%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %04x %1d\n", uf1, gf1, rf1, if1, zf1, uf2, gf2, rf2, if2, zf2, st, ot, >> dos) } paste (uno, dos, >> intermedio) if (cuenta != "") { count (intermedio, >> cuenta) } else { count (intermedio) } #--sort output file if (alaclasemag == "u") { sort(intermedio,col=8,num+,rev-, >> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "g") { sort(intermedio,col=10,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "r") { sort(intermedio,col=12,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "i") { sort(intermedio,col=14,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "z") { sort(intermedio,col=16,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } #--delete intermediate file(s) del (intermedio, ver-) del (temporal, ver-) del (uno, ver-) del (dos, ver-) end ./sbqsx2.cl0100644000151400015140000000604707213267127011752 0ustar phallphallprocedure sbqsx2(tblname,sortmag) # sbqsx2.cl -- task to format SX output for Sloan Bright Quasar survey # # REQUIRES: # --ctio package # --the following in your login.cl or loginuser.cl : # task $paste = "$foreign" # # this task output table column order: # 1 2 3 4 5 6 7 # run camCol rerun field objID ra dec \\ # 8 9 10 11 12 13 14 15 16 17 # umag uerr gmag gerr rmag rerr imag ierr zmag zerr \\ # 18 19 20 21 22 23 24 25 # u-g ugerr g-r grerr r-i rierr i-z izerr \\ # 26 27 28 29 30 # upixsat? gpixsat? rpixsat? ipixsat? zpixsat? \\ # 31 32 33 34 35 # ucensat? gcensat? rcensat? icensat? zcensat? \\ # 36 37 38 39 40 # uflags gflags rflags iflags zflags \\ # 41 42 43 44 45 # uflags2 gflags2 rflags2 iflags2 zflags2 \\ # 46 47 # status objc_type # # 001120: created by PBH string tblname {prompt="Full name of input file"} string sortmag {enum="u|g|r|i|z",prompt="Sort reformatted table on what magnitude?"} string countfile="" {prompt="Output size of reformatted table to what file?"} struct *list begin string mesanombre, alaclasemag, temporal, cuenta, intermedio, uno, dos string nombremesa int uf1, gf1, rf1, if1, zf1, uf2, gf2, rf2, if2, zf2, st, ot mesanombre = tblname nombremesa = mesanombre alaclasemag = sortmag cuenta = countfile intermedio = mesanombre//".sbqnc" temporal = mktemp("temp") uno = mktemp("tempuno") dos = mktemp("tempdos") #--create & count intermediate file filecalc (nombremesa, "$1;$2;$3;$4;$5;$6;$7;$8;$9;$10;$11;$12;$13;$14;$15;$16;$17;$8-$10;sqrt($9**2.+$11**2.);$10-$12;sqrt($11**2.+$13**2.);$12-$14;sqrt($13**2.+$15**2.);$14-$16;sqrt($15**2.+$17**2.);min(1,$18);min(1,$19);min(1,$20);min(1,$21);min(1,$22);min(1,$23);min(1,$24);min(1,$25);min(1,$26);min(1,$27)", format="%4d %1d %2d %5d %5d %11.7f %11.7f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %1d %1d %1d %1d %1d %1d %1d %1d %1d %1d %1d", >> uno) fields (nombremesa, "28-39", >> temporal) list = temporal while (fscan (list,uf1,gf1,rf1,if1,zf1,uf2,gf2,rf2,if2,zf2,st,ot) !=EOF) { printf ("%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %04x %1d\n", uf1, gf1, rf1, if1, zf1, uf2, gf2, rf2, if2, zf2, st, ot, >> dos) } paste (uno, dos, >> intermedio) if (cuenta != "") { count (intermedio, >> cuenta) } else { count (intermedio) } #--sort output file if (alaclasemag == "u") { sort(intermedio,col=8,num+,rev-, >> mesanombre//".sbqncsort"//alaclasemag) } else if (alaclasemag == "g") { sort(intermedio,col=10,num+,rev-,>> mesanombre//".sbqncsort"//alaclasemag) } else if (alaclasemag == "r") { sort(intermedio,col=12,num+,rev-,>> mesanombre//".sbqncsort"//alaclasemag) } else if (alaclasemag == "i") { sort(intermedio,col=14,num+,rev-,>> mesanombre//".sbqncsort"//alaclasemag) } else if (alaclasemag == "z") { sort(intermedio,col=16,num+,rev-,>> mesanombre//".sbqncsort"//alaclasemag) } #--delete intermediate file(s) del (intermedio, ver-) del (temporal, ver-) del (uno, ver-) del (dos, ver-) end ./splat.cl0100644000151400015140000000642407341540445011651 0ustar phallphallprocedure splat(plate,mjd,fiber) # splat.cl -- SPLOT front end for SDSS spectra # # REQUIRES # --noao.onedspec package # # ASSUMES # --storage directory naming conventions idlspec2d$0###/ & spectra1d$###/ # for 3-digit plate codes; note leading zero in one case but not other # # NOTES # --formats for the two pipelines' spectra are different: # BAND idlspec2d spectro1d # 0 data - # 1 1/sigma^2 data # 2 AND continuum-subtracted data # 3 OR sigma # 4 dispersion mask bits # --spectra from the same plate are stored differently in the two pipelines: # in idlspec2d, you can browse all fibers in a plate, but you can't # switch to the error spectrum etc. for any fibers; # in spectro1d, you can switch to the error spectrum etc. for the fiber, # but you can't browse any other fibers in the plate. # # 001128: created by PBH # 001201: added spectro1d support # ** added option for same-directory plotting if "." string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of Plate observation"} int fiber {prompt="Fiber number (leading zeros optional)"} string datatype="data" {enum="data|err|contsub|and|or|dispersion|mask",prompt="Plot: data|err|contsub|and|or|dispersion|mask"} bool schlegel=yes {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} bool echo=no {prompt="Echo actual splot command?"} struct *list begin string plata, fecha, camino, cero, code, fibra int venda bool princeton, eco, go plata = plate fecha = mjd fibra = fiber code = datatype princeton = schlegel if (!princeton) { camino = spectro1d } else { camino = idlspec2d } eco = echo cero = "0" go = yes if (!princeton) { if (code=="data") { venda=1 } else if (code=="err") { venda=3 } else if (code=="contsub") { venda=2 } else if (code=="mask") { venda=4 } else if (code=="and") { go=no } else if (code=="or") { go=no } else if (code=="dispersion") { go=no } } else { if (code=="data") { venda=0 } else if (code=="err") { venda=1 } else if (code=="and") { venda=2 } else if (code=="or") { venda=3 } else if (code=="dispersion") { venda=4 } else if (code=="contsub") { go=no } else if (code=="mask") { go=no } } if (go) { #--splot spectro1d format data, using leading zero only where needed if (!princeton) { if ((strlen(plata)!=3)) { cero = "" } if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } if (eco) { print ("splot "//camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0] line="/venda//" band=1") } splot (camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", line=venda, band=1) } else { #--splot idlspec2d format data, adding leading zero if needed if ((strlen(plata)==3)) { plata = "0"//plata } if (eco) { print ("splot "//camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"] band=1") } splot (camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"]", band=1) } } else { print ("FATAL ERROR: chosen pipeline doesn't have that datatype.") } end ./lplots.cl0100644000151400015140000005450307403702432012037 0ustar phallphallprocedure lplots (plate, mjd, fiber, z) # This procedure plots an object spectrum and overplots vertical lines at the # positions of spectral features for the given redshift: # dotted lines for emission, # dashed lines for absorption, # solid lines for night sky emission at 5577, 5892, and 6300 A, # dot-dash lines for telluric absorption features (Stevenson 1994) # OR dot-dash lines for features in the CNOC2 spectra of # early-type galaxies which empirically mimic emission lines. # The line lists used, including IDs, are found in the following files, # which are stored in the phist home directory: # # ll_strabs strong absorption lines (43) [myj88tab4 + a few others] # ll_mostabs most absorption lines (111) [myj88] # ll_allabs all absorption lines (199) # ll_feiiabs FeII lines (364) [all >1215Ang. Moore multiplets thru UV111] # ll_strem strong emission lines (55) # ll_mostem most emission lines (153) [non-LAF80] # ll_allem all emission lines (223) # ll_sdssem SDSS quasar composite emission lines (76) # # REQUIRES: # --stsdas package loaded (for IGI) # --the following in your login.cl or loginuser.cl : # task $cp = "$foreign" # # NOTES: # --specfile="default" creates, for plate 357, mjd 51813, fiber 509, z=2.118 : # sp0357_51813_509.obs # --plotfile="default" creates, for plate 357, mjd 51813, fiber 509, z=2.118 : # sp0357_51813_509_z2.118.igi # and for the above plus "frame=rest start=2530 end=2650" it creates : # sp0357_51813_509_z2.118_r2530_2650.igi # and for the above plus "frame=observed start=7700 end=9205" it creates : # sp0357_51813_509_z2.118_o7700_9205.igi # --if the FITS spectrum is in your working directory, set idlspec2d or # spectro1d (as appropriate) to "." # --if the FITS spectrum has a non-standard name, use fitsname=... # # 001205: added spectro1d support # 010227: can now work on FITS spectrum in home directory # 010613: can now work on FITS spectrum of any name in home directory # 010622: sky lines now plotted only when within requested wavelength range # 010913: added options: emission labels, own linelist, plot to screen bottom, # different em/abs z's, x & y & alternating offsets for labels, telluric abs. # # TODO: # **define pointlimit (top point for ID lines) \& flatlimit (bottom of plot) # **for EACH line move pointlimit restwave; draw flatlimit restwave; # draw flatlimit restwave*z2/z1; draw pointlimit restwave*z2/z1 # **make robust to tweaks of the z's, species, and plotprogram # **colored lines string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of observation"} string fiber {prompt="Fiber number (leading zeros optional)"} real z {prompt="Redshift"} real z2=0. {prompt="Secondary Redshift"} string primary="both" {enum="em|abs|both",prompt="Primary z is for (em|abs|both)"} string fitsfile="" {prompt="FITS spectrum to use"} string specfile="default" {prompt="Observed spectrum text file to use or save"} string plotfile="" {prompt="igi commands file to save (will overwrite)"} string absplot="strong" {enum="all|most|strong|feii|none|own",prompt="Plot absorption lines (all|most|strong|feii|none|own)?"} string emplot="strong" {enum="all|most|strong|sdss|none|own",prompt="Plot emission lines (all|most|strong|sdss|none|own)?"} string ownelist="" {prompt="Own list of emission lines"} string ownalist="" {prompt="Own list of absorption lines"} bool nightsky=no {prompt="Plot wavelengths of strong night sky lines?"} bool telluric=no {prompt="Plot wavelengths of telluric absorption lines?"} bool fakeplot=no {prompt="Plot features that mimic emission lines?"} bool errplot=no {prompt="Overplot 1-sigma error spectrum?"} bool addlabel=no {prompt="Add line ID labels to plot?"} real labelxoffset=0 {prompt="x-axis offset for line ID labels"} real labelyoffset=0 {prompt="y-axis offset for line ID labels"} bool alternate=no {prompt="Double y-axis offset every other line ID label?"} bool botlabel=yes {prompt="Include bottom label on plot?"} bool lowerlim=no {prompt="Plot from min. flux in spectrum instead of 0?"} real top=0. {prompt="Max flux value to plot (if !=0) in 10^-17 units"} real startplot=0. {prompt="Start wavelength for plot"} real endplot=0. {prompt="End wavelength for plot"} string frameplot="neither" {enum="neither|observed|rest",prompt="Frame of start/end wavelengths"} bool schlegel=yes {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} struct *list begin string igicommands, plata, fecha, fibra, temp0, temp1, temp2, temp3, marco, path string nombre, otronombre, nuevonombre, camino, absorcion, emision, elemento string code, cero, zs, fitsnombre, myelist, myalist, primero, zs2 string phistdir # pathname of PHIST source code directory real zed, xmin, xmax, ymin, ymax, junk, obsmin, obsmax, principio, conclusion real numero, cima, zed2, min2, max2, yoffset, xoffset, x_min, x_max, flip, yorig int posicion bool miny, errores, falsificacion, princeton, eco, go, libel, nochecielo, abajo bool seesaw, telurico plata = plate fecha = mjd fibra = fiber zed = z zs = str(zed) if (substr(zs,strlen(zs),strlen(zs))==".") zs=substr(zs,1,strlen(zs)-1) zed2 = z2 zs2 = str(zed2) if (substr(zs2,strlen(zs2),strlen(zs2))==".") zs2=substr(zs2,1,strlen(zs2)-1) primero = primary fitsnombre = fitsfile nuevonombre = specfile otronombre = plotfile absorcion = absplot emision = emplot myelist = ownelist myalist = ownalist nochecielo = nightsky telurico = telluric falsificacion = fakeplot errores = errplot libel = addlabel xoffset = labelxoffset yoffset = labelyoffset seesaw = alternate abajo = botlabel miny = lowerlim ymax = top principio = startplot conclusion = endplot marco = frameplot princeton = schlegel cero="0" if (!princeton) { camino = spectro1d if ((strlen(plata)!=3)) { cero = "" } } else { camino = idlspec2d cero = "" if ((strlen(plata)==3)) { plata = "0"//plata } } phistdir = osfn("phist$") temp1 = mktemp("temp1") temp2 = mktemp("temp2") temp3 = mktemp("temp3") nombre=temp1 if(nuevonombre=="default" || nuevonombre=="Default" || nuevonombre=="DEFAULT"){ nuevonombre="sp"//cero//plata//"_"//fecha//"_"//fibra//".obs" } if(nuevonombre==""){ nuevonombre=temp2 print ("Converting to linear wavelength scale...") } else { if (access(nuevonombre)) { print ("Using existing spectrum text file "//nuevonombre) } else { del(nuevonombre, ver-, >& "dev$null") print ("Creating linear wavelength scale spectrum text file "//nuevonombre) } } #--idlspec2d format if (princeton) { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { if (camino==".") { path="" } else { path=camino//plata//"/" } # --check if spectrum fits file has WCSDIM keyword imgets(path//"spPlate-"//plata//"-"//fecha//".fits[0]", "wcsdim", >& "dev$null") # --if spectrum fits file has WCSDIM keyword, make local copy if (imgets.value!="0") { # --if not already present if (!imaccess("spPlate-"//plata//"-"//fecha)) { cp (path//"spPlate-"//plata//"-"//fecha//".fits", ".") } hedit("spPlate-"//plata//"-"//fecha//".fits[0]", "WCSDIM", del+, add-, ver-, show-, update+) path="" } # --list out flux & 1/sigma^2 in log10(lambda) if (!access(nombre)) { if (fitsnombre=="") { listpix (path//"spPlate-"//plata//"-"//fecha//"[0][*,"//fibra//"]", wcs="world", >> nombre) listpix (path//"spPlate-"//plata//"-"//fecha//"[1][*,"//fibra//"]", wcs="world", >> nombre//"_errs") } else { listpix (fitsnombre//"[0][*,"//fibra//"]", wcs="world", >> nombre) listpix (fitsnombre//"[1][*,"//fibra//"]", wcs="world", >> nombre//"_errs") } } # --convert to linear lambda in observed frame, and to sigma from 1/sigma^2 filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;(1./sqrt($2@2))", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } #--spectro1d format } else { if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { if (camino==".") { path="" } else { path=camino//plata//"/" } # --list out flux & sigma in log10(lambda) if (!access(nombre)) { if (fitsnombre=="") { listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,1]", wcs="world", >> nombre) listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,3]", wcs="world", >> nombre//"_errs") } else { listpix (fitsnombre//"[0][*,1]", wcs="world", >> nombre) listpix (fitsnombre//"[0][*,3]", wcs="world", >> nombre//"_errs") } } # --convert to linear lambda in observed frame filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } } # --find plot limits if (marco=="neither") { print ("Finding plot limits in observed and rest frame...") head (nuevonombre, nlines=1) | scan (obsmin, junk) tail (nuevonombre, nlines=1) | scan (obsmax, junk) xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) min2=obsmin/(1+zed2) max2=obsmax/(1+zed2) } else { if (marco=="rest") { xmin=principio xmax=conclusion obsmin=(1+zed)*xmin obsmax=(1+zed)*xmax min2=obsmin/(1+zed2) max2=obsmax/(1+zed2) } else { obsmin=principio obsmax=conclusion xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) min2=obsmin/(1+zed2) max2=obsmax/(1+zed2) } } if (ymax==0.) {sort(nuevonombre, col=2, num+, rev+) | head (junk, nlines=1) | scan (junk, ymax)} ymin=0. if (miny) { sort(nuevonombre,col=2,num+,rev-) | head(junk,nlines=1) |scan(junk,ymin) } # --create igi commands file if(otronombre=="default" || otronombre=="Default" || otronombre=="DEFAULT"){ if (frameplot=="neither") { otronombre="sp"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//".igi" } else if (frameplot=="rest") { otronombre="sp"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//"_r"//int(principio)//"_"//int(conclusion)//".igi" } else if (frameplot=="observed") { otronombre="sp"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//"_o"//int(principio)//"_"//int(conclusion)//".igi" } } igicommands = otronombre if(otronombre==""){ igicommands=temp3 print ("Creating igi commands file...") } else { del(otronombre, ver-, >& "dev$null") print ("Creating igi commands file "//otronombre//" ; rerun by typing:") print ("igi (initcmd=\"input "//otronombre//" ; end\", >\"dev$null\")" } print ("#igi display script for spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="//zed, >igicommands) if(abajo){print ("location 0.035 0.99 0.1 0.95", >>igicommands)} else{print ("location 0.035 0.99 0.03 0.95", >>igicommands)} print ("window 1 1 1; ltype 0; expand 0.9", >>igicommands) print ("limits ",obsmin,obsmax,ymin,ymax, >>igicommands) print ("data "//nuevonombre//"; xcol 1; ycol 2", >>igicommands) print ("connect", >>igicommands) if (errores) print ("data "//nuevonombre//"; xcol 1; ycol 3", >>igicommands) if (errores) print ("connect", >>igicommands) if(abajo){ print ("axis ",xmin,xmax,0.,0.,0.035,0.95,0.955,0,0, >>igicommands) #top print ("axis ",xmin,xmax,0.,0.,0.035,0.95,0.955,1,1, >>igicommands) #top print ("axis ",obsmin,obsmax,0.,0.,0.035,0.10,0.955,1,0, >>igicommands) #bottom print ("angle 90", >> igicommands) print ("axis ",ymin,ymax,0.,0.,0.035,0.1,0.85,2,1, >> igicommands) #left print ("axis ",ymin,ymax,0.,0.,0.99,0.1,0.85,0,0, >> igicommands) #right print ("angle 0", >> igicommands) print ("expand 1; xlabel spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" z2="/zed2//" -- Bottom: Observed \gl (\gV) -- Top: Rest \gl (\gV)", >>igicommands) }else{ print ("axis ",xmin,xmax,0.,0.,0.03,0.95,0.96,0,0, >>igicommands) #top print ("axis ",xmin,xmax,0.,0.,0.03,0.95,0.96,1,1, >>igicommands) #top print ("axis ",obsmin,obsmax,0.,0.,0.03,0.03,0.96,1,0, >>igicommands) #bottom print ("angle 90", >> igicommands) print ("axis ",ymin,ymax,0.,0.,0.03,0.03,0.92,2,1, >> igicommands) #left print ("axis ",ymin,ymax,0.,0.,0.99,0.03,0.92,0,0, >> igicommands) #right print ("angle 0", >> igicommands) print ("expand 1; move "//obsmin//" "//ymin//"; justify 9; label spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" z2="//zed2, >>igicommands) } if (nochecielo) { print ("#--night sky lines", >> igicommands) print ("ltype 0", >>igicommands) if (obsmin<5077 && obsmax>5077) { print ("move 5577 0; draw 5577 "//ymax, >>igicommands) } if (obsmin<5892 && obsmax>5892) { print ("move 5892 0; draw 5892 "//ymax, >>igicommands) } if (obsmin<6300 && obsmax>6300) { print ("move 6300 0; draw 6300 "//ymax, >>igicommands) } } if (telurico) { print ("#--telluric absorption lines", >> igicommands) print ("ltype 4", >>igicommands) print ("move 6290 0; draw 6290 "//ymax, >>igicommands) print ("move 6500 0; draw 6500 "//ymax, >>igicommands) print ("move 6900 0; draw 6900 "//ymax, >>igicommands) print ("move 7200 0; draw 7200 "//ymax, >>igicommands) print ("move 7600 0; draw 7600 "//ymax, >>igicommands) print ("move 8200 0; draw 8200 "//ymax, >>igicommands) print ("move 9000 0; draw 9000 "//ymax, >>igicommands) print ("move 9150 0; draw 9150 "//ymax, >>igicommands) print ("move 9350 0; draw 9350 "//ymax, >>igicommands) print ("move 9750 0; draw 9750 "//ymax, >>igicommands) } if (falsificacion) { print ("#--mock emission lines", >> igicommands) print ("ltype 4", >>igicommands) print ("move 4025 0; draw 4025 "//ymax, >>igicommands) print ("move 4505 0; draw 4505 "//ymax, >>igicommands) print ("move 4555 0; draw 4555 "//ymax, >>igicommands) print ("move 4625 0; draw 4625 "//ymax, >>igicommands) print ("move 5051 0; draw 5051 "//ymax, >>igicommands) } if(primero=="abs"||primero=="both"){ print ("#--switch to rest frame plotting", >> igicommands) print ("limits ",xmin,xmax,ymin,ymax, >>igicommands) x_min=xmin; x_max=xmax }else{ print ("#--switch to secondary rest frame for absorption lines", >> igicommands) print ("limits ",min2,max2,ymin,ymax, >>igicommands) x_min=min2; x_max=max2 } print ("#--absorption lines", >> igicommands) print ("ltype 2; justify 6", >>igicommands) if (absorcion=="own") { list=myalist yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (absorcion=="all") { list=phistdir//"ll_allabs" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (absorcion=="most") { list=phistdir//"ll_mostabs" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (absorcion=="strong") { list=phistdir//"ll_strabs" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (absorcion=="feii") { list=phistdir//"ll_feiiabs" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if(primero=="abs"){ print("#--switch to secondary rest frame for emission lines", >> igicommands) print ("limits ",min2,max2,ymin,ymax, >>igicommands) x_min=min2; x_max=max2 } if(primero=="em"){ print ("#--switch to primary rest frame for emission lines", >> igicommands) print ("limits ",xmin,xmax,ymin,ymax, >>igicommands) x_min=xmin; x_max=xmax } print ("#--emission lines", >> igicommands) print ("ltype 1", >>igicommands) if (emision=="own") { list=myelist yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (emision=="all") { list=phistdir//"ll_allem" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (emision=="most") { list=phistdir//"ll_mostem" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (emision=="strong") { list=phistdir//"ll_strem" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } if (emision=="sdss") { list=phistdir//"ll_sdssem" yorig=yoffset;flip=0.;if(seesaw){flip=1.} while (fscan(list,numero,elemento)!=EOF) { flip=-1*flip if (flip<-0.5) { yoffset=yoffset*2. } else if (flip>0.5) { yoffset=yoffset/2. } posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>x_min && numero>igicommands) } } else { if (numero>x_min && numero>igicommands) } } } yoffset=yorig } igi (initcmd="input "//igicommands//" ; end", >"dev$null") del (temp1, ver-, >& "dev$null") del (temp2, ver-, >& "dev$null") del (temp3, ver-, >& "dev$null") end ./_phist.hd0100644000151400015140000000023507213270145011776 0ustar phallphall# Help definitions for the PHIST package phist men = phist.men, hlp = .., sys = phist.hlp, pkg = phist.hd, src = phist.cl ./ll_allabs0100644000151400015140000001320107403457413012046 0ustar phallphall10830.34 ,HeI10830.2,e,a,AAQ00 10830.25 ,HeI10830.2,e,a,AAQ00 10829.09 HeI10830.2,e,a,AAQ00 6235 TiO,a,Songaila 5897.5581 ,NaI,a,e,MYJ88 5891.5833 NaI,a,e,MYJ88 5783 ?,a,Songaila 5401 FeI,a,Songaila 5332 FeI,a,Songaila 5269 Ca+Fe,a,Songaila 5175 MgI,a,Songaila #(5185 in DVB) 4862.68 H\gb,a,e,wDVB #=4861.32 Hbeta,a,e,AAQ00 4428 DIB,a,coh99 4384 FeI,a,Songaila 4341.68 H\gg,e,a,wDVB #=4340.46 Hgamma,e,a 4304.4 MgGband,a,Songaila 4227.918 CaI,a,Songaila+MYJ88 4102.89 Hdelta,e,a,wDVB #=4101.73 Hdelta,e,a 4026 HeI, 3971.20 H7,e,a,wDVB,(Balmer) #=3970.07 H7,e,a (Balmer) 3969.591 ,CaII(CaH),a,Songaila+MYJ88 3945.1224 AlI,a,MYJ88 3934.777 CaII(CaK),a,Songaila+MYJ88 3890.15 H8,e,a,wDVB,(Balmer) #=3889.1 H8,e,a (Balmer) 3889.74 HeI,e,a,wDVB #=3888.9 HeI,e,a (3888.65 in AAQ00) 3833 CN,a,Songaila 3720.9927 FeI,a,MYJ88 3303.9 ,NaI,2000A&A...359..457P 3303.3 NaI,2000A&A...359..457P 3188.67 HeI,e,a,AAQ00,wDVB 3133.70 OIII,e,a,wDVB 3083.0479 AlI,a,MYJ88 3021.5189 FeI,a,MYJ88 2967.7646 FeI,a,MYJ88 2945.965 HeI,a,Arav2001/Moore 2934 MgII,e #Grandi\&Phillips1978 2852.9642 MgI,a,Bahcall+MYJ88 2803.531 ,MgII,a,e,Bahcall+MYJ88tab4 2796.352 MgII,a,e,Bahcall+MYJ88tab4 2750.1 FeII*,a,UV62 2722.450 CaI,a,MYJ88 2719.8331 FeI,a,MYJ88 2606.462 ,MnII,a,Bahcall+MYJ88 2600.1729 ,FeII,a,Bahcall+MYJ88tab4 2594.499 ,MnII,a,Bahcall+MYJ88 2586.6500 FeII,a,Bahcall+MYJ88tab4 2576.877 MnII,a,Bahcall+MYJ88 2523.6083 ,FeI,a,MYJ88 2515.0730 SiI,a,MYJ88 2501.8861 ,FeI,a,MYJ88 2484.0210 ,FeI,a,MYJ88,(strongest) 2463.3921 FeI,a,MYJ88 2382.7652 ,FeII,a,Bahcall+MYJ88tab4 2374.4612 ,FeII,a,Bahcall+MYJ88tab4 2344.2139 FeII,a,Bahcall+MYJ88tab4 2320.7437 ,NiI,a,MYJ88 2311.6688 NiI,a,MYJ88 2298.9 FeII,ea?,UV133,0059 2260.7805 ,FeII,a,Bahcall+MYJ88 2249.88 FeII,a,Bahcall 2218.915 ,SiI,a,MS73 2218.057 ,SiI,a,MS73 2216.669 ,SiI,a,MS73 2211.744 ,SiI,a,MS73 2210.894 ,SiI,a,MS73 2207.978 SiI,a,MS73 2177.7 FeII,ea?,UV106,0059 2167.453 FeI,a,MYJ88 2153.0 FeII,ea?,UV106,0059 2079.0 ,FeIII,ea?,UV48,0059 2068.2 ,FeIII,ea?,UV48,0059 2066.161 ,CrII,a,MYJ88 2062.662 ZnII,a,Bahcall+MYJ88 2062.263 ,CrII,a,MYJ88 2061.5 FeIII,ea?,UV48,0059 2056.254 CrII,a,MYJ88 2026.4768 MgI,Bahcall+MYJ88 2026.137 ZnII,Bahcall+MYJ88 1926.3 ,FeIII,ea?,UV34,0059 1914.056 ,FeIII,ea?,UV34,0059 1895.5 FeIII,ea?,UV34,0059 1862.7895 ,AlIII,i,a,Bahcall+MYJ88tab4,cB58 1854.7164 AlIII,i,a,Bahcall+MYJ88tab4,cB58 1845.5203 SiI,a,MYJ88 1827.9351 MgI,a,MYJ88weak 1808.0126 SiII,i,a,Bahcall+MYJ88 1807.3110 SI,a,MYJ88 1787.996 ,FeII,ea?,UV191,0059 1787.68 ,PI,ea?,UV1,0059 1786.752 ,FeII,ea?,UV191,0059 1785.272 FeII,ea?,UV191,0059 1782.87 ,PI,ea?,UV1,0059 1782.263 SI,ea?,UV13,0059 1774.99 PI,ea?,UV1,0059 1751.910 ,NiII,i,a,MYJ88 1741.549 NiII,i,a,MYJ88 1718.551 NIV,*e,cB58 1709.600 NiII,i,a,MYJ88 1670.7874 AlII,i,a,Bahcall+cB58+MYJ88tab4 1656.9282 CI,a,MYJ88 1640.42 HeII,e,a,AAQ00 #(1640.34/1640.47) 1608.4511 FeII,i,a,Bahcall+cB58+MYJ88tab4 1560.3095 CI,a,MYJ88 1550.774 ,CIV,i,a,Bahcall+MYJ88tab4 1548.202 CIV,i,a,Bahcall+MYJ88tab4 1533.4312 SiII*,i,a,Bahcall 1526.7071 SiII,i,a,Bahcall+MYJ88tab4,cB58 1501.76 SV,*,cB58 1473.9942 SI,a,MYJ88 1427.85 CIII,*,cB58 1425.0300 SI,a,MYJ88 1417.237 SiIII,*,cB58 1402.770 ,SiIV,i,a,Bahcall+MYJ88tab4,cB58 1393.755 SiIV,i,a,Bahcall+MYJ88tab4,cB58 1370.132 NiII,i,a,MYJ88 1358.7730 CuII,a,MYJ88 1343.354 OIV,*,cB58 1335.71 CII*,a,Bahcall 1334.5323 CII,i,a,e,Bahcall+MYJ88tab4,cB58 1324.316 NIII,*,cB58 1323.929 CII,*,cB58 1317.217 NiII,i,a,MYJ88 1309.2757 SiII*,e,a 1304.86 OI*,a,Bahcall 1304.3711 SiII,i,a,Bahcall+MYJ88tab4,cB58 1302.1685 OI,i,a,e,Bahcall+MYJ88tab4,cB58 1298.697 TiIII,a,MYJ88 1296.726 SiIII,*,cB58 1296.33 CIII,*,cB58 1295.6526 SI,a,MYJ88 1294.543 SiIII,*,cB58 1277.2454 CI,i,a,MYJ88 1264.7377 SiII*,i,a,e,Bahcall 1260.4223 SiII,i,a,Bahcall+MYJ88tab4,cB58 1259.519 ,SII,i,a,Bahcall+cB58 #(not SiII) 1253.811 ,SII,i,a,Bahcall+ #(not SiII) 1250.58 SII,a,Bahcall #(not SiII) 1242.804 ,NV,a,e,Bahcall+MYJ88tab4 1238.821 NV,a,i,e,Bahcall+MYJ88tab4 1215.6701 Ly\ga,a,e,Bahcall+MYJ88tab4 1206.500 SiIII,i,a,Bahcall+MYJ88tab4,cB58 1200.7098 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1200.2233 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1199.5496 NI,i,a,Bahcall+MYJ88tab4,cB58 1194.50 SiII*,a,Bahcall 1193.2898 ,SiII,i,a,Bahcall+MYJ88tab4 1190.4160 SiII,i,a,Bahcall+MYJ88tab4 1190.21 SIII,a,Bahcall 1144.939 FeII,a,Bahcall+MYJ88 1134.9803 ,NI,a,Bahcall+MYJ88 1134.4149 ,NI,a,Bahcall+MYJ88 1134.1653 NI,a,Bahcall+MYJ88 1128.008 PV,a,MYJ88 1122.526 FeIII,a,Bahcall+MYJ88 1121.975 FeII,a,Bahcall+MYJ88 1117.977 PV,a,MYJ88 1096.877 FeII,a,Bahcall+MYJ88 1085.70 ,NII*,a,Bahcall 1085.55 ,NII*,a,Bahcall 1084.58 NII*,a,Bahcall 1083.990 NII,a,Bahcall+MYJ88tab4 1066.6599 ArI,a,MYJ88 1063.176 FeII,a,MYJ88 1062.671 SIV,a,MYJ88 1048.2199 ArI,a,MYJ88 1037.6155 ,OVI,a,Bahcall+MYJ88tab4 1036.3367 CII,a,Bahcall+MYJ88tab4 1031.9265 OVI,a,Bahcall+MYJ88tab4 1025.7223 Ly\gb,a,Bahcall+MYJ88tab4 1020.6990 SiII,a,MYJ88 1012.504 SIII,a,MYJ88 992.68 SiII*,a,LAF80 989.8731 SiII,a,Bahcall+MYJ88 989.790 NIII,a,MYJ88tab4 988.7734 OI,a,MYJ88tab4 977.02 CIII,a,Bahcall+MYJ88tab4 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 971.7381 OI,a,MYJ88tab4 963.801 PII,a,MYJ88 953.9599 NI,a,MYJ88 950.657 PIV,a,MYJ88 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 944.525 SVI,a,MYJ88 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 933.376 SVI,a,MYJ88 917.118 PIII,a,MYJ88 915.612 NII,a,MYJ88tab4 911.763 LyLim,a,AAQ00 835.289 OIII,a,Arav99 790.199 OIV,a,Arav99 786.464 SV,a,Arav99 770.409 NeVIII,a,Arav99 765.147 NIV,a,Arav99 750.222 SIV,a,Arav99 681.719 NaIX,a,Arav99 629.732 OV,a,Arav99 609.793 MgX,a,Arav99 584.334 HeI,a,Arav99 572.338 NeV,a,Arav99 ./ll_allem0100644000151400015140000001375407403450270011711 0ustar phallphall18751.0 P\ga,Paschen_alpha,e,AAQ00 12818.1 P\gb,Paschen_beta,e,AAQ00 10830.34 ,HeI,10830.2,e,AAQ00 10830.25 ,HeI,10830.2,e,AAQ00 10829.09 HeI,10830.2,e,AAQ00 10691 CI,LAF80 10689 ,SiI,LAF80 10627 ,SiI,LAF80 10603 SiI,LAF80 10371 ,SiI,LAF80 10124 ,HeII,LAF80 10120 HeII,LAF80 10049 P\gd,Paschen_delta,LAF80 9961 NaI,LAF80 9710 CIII,LAF80 9545 [SIII]/P8,Paschen8,LAF80 9299 P9,Paschen9,LAF80 9068.9 [SIII],AAQ00 9014 P10,Paschen10,LAF80 8862 P11,Paschen11,LAF80 8750 P12,Paschen12,LAF80 8665 P13,Paschen13,LAF80 8446.5 OI,AAQ00 8237 HeII,LAF80 8046 [CIV],?,LAF80 7894.00 [FeXI],e,DVB 7892.10 [NiIII],e,DVB 7751 ,[ArIII],LAF80 7330 ,[OII]7325,e,LAF80 7325 ,[OII]7325,e,LAF80 7320 [OII],7325,e,LAF80 7237.3 [ArIV],e,OSTp63 7137.80 [ArIII],e,wDVB #(7136 in LAF80) 7067.20 HeI,e,DVB 7006 [ArV],LAF80 6732.67 ,[SII],e,wDVB #=6730.85 #[SII],e,AAQ00 (6734 in LAF80) 6718.29 [SII],e,wDVB #=6716.47 #[SII],e,AAQ00 6678 HeI,LAF80 6585.28 ,[NII],e,wDVB #=6583.39 #[NII],e,AAQ00 6564.61 H\ga,e,wDVB #=6562.80 #Halpha,e,AAQ00 6549.85 [NII],e,wDVB #=6548.06 #[NII],e,AAQ00 6376.30 [FeX],e,wDVB #=6374.53 #[FeX],e,AAQ00 6365.54 [OI],e,wDVB #=6363.78 #[OI],e,AAQ00 6312.1 [SIII],e,OSTp61 6302.05 [OI],e,wDVB #=6300.3 #[OI],e,AAQ00 6087.98 [FeVII],e,DVB 5977.0 HeII,e #(real?) 5897.5581 ,NaI,a,e,MYJ88 5891.5833 NaI,a,e,MYJ88 5877.29 HeI,e,wDVB #=5875.7 #HeI,e,AAQ00 5808 CIV,WRstarbursts 5754.57 [NII],e,AAQ00 5722.30 [FeVII],e,wDVB #=5721.11 #[FeVII],e,AAQ00 5696 CIV,WRstarbursts 5539.43 [ClIII],e,DVB 5412 HeII,LAF80 5310.59 [CaV],e,wDVB #=5309.18 #[CaV],e,AAQ00 5304.34 [FeXIV],e,DVB 5294 FeII,Opt48/49,e,DVB 5277.85 [FeVII],e,DVB 5199.83 [NI],e,AAQ00 5160.33 [FeVII],e,DVB 5008.24 [OIII],e,wDVB #=5006.84 #[OIII],e,AAQ00 4960.30 [OIII],e,wDVB #=4958.91 #[OIII],e,AAQ00 4931 FeII,Opt42,e,DVB 4922 HeI,e 4862.68 H\gb,a,e,wDVB #=4861.32 #Hbeta,a,e,AAQ00 4740.20 [ArIV],AAQ00 4726 ,[NeIV],LAF80 4724 ,[NeIV],LAF80 4720 [NeIV],e 4711.34 [ArIV],HeI,AAQ00 4687.02 HeII,e,wDVB #=4685.65 #HeII,e,AAQ00 (4685.4/4685.7) 4658 [FeIII],e #(also CIV in LAF80) 4650 WR,bump 4647 CIII,e 4641 ,NIII,e 4634 NIII,e 4571 MgI],e,OSTp389 #(MgI in LAF80) 4565 FeII,Opt37/38,e,DVB 4541 HeII,LAF80 4479 FeII,Opt37,e,DVB 4472.76 HeI,e,DVB,(4471) 4388 HeI,LAF80 4364.44 [OIII],e,wDVB #=4363.21 #[OIII],e,AAQ00 4341.68 H\gg,e,a,wDVB #=4340.46 #Hgamma,e,a 4320 [FeII],FeII,Opt21F/32e,DVB 4267 CII,e 4241 [FeII],Opt21F,e,DVB 4227 [FeV],e 4200 HeII,LAF80 4185 FeII,Opt27/28,e,DVB 4141 FeII,Opt27/28,e,DVB 4102.89 H\gd,e,a,wDVB #=4101.73 #Hdelta,e,a 4100 HeII,LAF80 4097 NIII,LAF80 4073.63 [SII],e,wDVB #=4071 (4068.6/4076.35 in AAQ00, 4073.63 in DVB) 4026 HeI,HeII,LAF80 3971.20 H7,e,a,wDVB,(Balmer) #=3970.07 #H7,e,a (Balmer) 3969.591 CaII(CaH),a,e,Songaila+MYJ88 3968.58 [NeIII],e,wDVB #=3969 (3968/3970 in LAF80; 3967.47 in AAQ00) 3965 HeI,LAF80 3934.777 CaII(CaK),a,e,Songaila+MYJ88 3890.15 H8,e,a,wDVB,(Balmer) #=3889.1 #H8,e,a (Balmer) 3889.74 HeI,e,a,wDVB #=3888.9 #HeI,e,a (3888.65 in AAQ00) 3883.7 HeII,e 3869.85 [NeIII],e,wDVB #=3868.75 #[NeIII],e,AAQ00 3835 H9, 3820 HeI,LAF80 3798 H10,(Balmer) 3770 H11,(Balmer) 3759.99 [FeVII],e,DVB 3750 H12,(Balmer) 3734 H13,(Balmer) 3729.88 ,[OII],air3728.82 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3727.09 [OII],air3726.03 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3722 [SIII],e 3722 H14,(Balmer) 3712 H15,(Balmer) 3704 H16,(Balmer) 3697 H17,(Balmer) 3691 H18,(Balmer) 3588.30 HeI,e,DVB 3587.34 [FeVII],e,DVB 3499 FeII,e,DVB 3444 OIII,e 3429 OIII,e 3426.84 [NeV],e,wDVB #=3425.87 #[NeV],e,AAQ00 3412 OIV,LAF80 3346.82 [NeV],e,wDVB #=3345.83 #[NeV],e,AAQ00 3343 [NeIII],LAF80 3341 OIII,LAF80 3312 OIII,LAF80 3299 OIII,LAF80 3282 FeII,Opt1,e,DVB 3262 FeI/FeII,Opt91/Opt1,e,DVB 3203.07 HeII,e,AAQ00 3188.67 HeI,e,a,AAQ00,wDVB 3133.70 OIII,e,a,wDVB 3063 [NII],LAF80 3047 OIII,LAF80 2973 [NeV],LAF80 2965 FeII,UV78,e,DVB 2934 MgII,e #Grandi\&Phillips1978 2931 [MgV],LAF80 2869 ,[ArIV],LAF80 2855 [ArIV],LAF80 2804 ,MgII,LAF80 2798.75 MgII,a,e,wDVB #=2797.92 #MgII,a,e,AAQ00 (2795.53/2802.71) 2786 [MgV],LAF80 2734 HeII,LAF80 2672.04 OIII,e,DVB 2669.95 AlII],e,DVB 2632 [MgVII],LAF80 2627 FeII,UV1,e,DVB 2512 HeII,[MgVII],LAF80 2471.03 [OII],e,DVB 2423.83 [NeIV],e,DVB #(OSTp62: 2421.8/2424.5) 2326.44 CII],e,wDVB #=2326.58 AAQ00 (2324.21/2325.4/2326.11/2327.65/2328.84) 2321 [OIII],e,OSTp61 2321 FeII,many,e,DVB 2297 CIII,e 2222 FeII,UV118,UV376,e,DVB 2176 FeII,UV79,UV370,e,DVB 2141.57 NII],e,wDVB #=2141.36 #NII],e,AAQ00 (2139.01/2142.77) 2077 FeIII,UV48,e,DVB 2066.3 BIII,e,Baldwin 1989 FeIII,UV50,e,DVB 1957 FeIII,UV68,UV61,e,DVB 1908.73 CIII],e,AAQ00 1892.03 SiIII],e,AAQ00 1857.41 AlIII,a,e,AAQ00 #(1854.72/1862.79) 1814.73 [NeIII],e,DVB 1813.98 SiII,e,AAQ00 #(1808.1/1816.93/1817.45) 1788 FeII,UV191,e,DVB 1750.46 NIII],e,AAQ00 #(1746.82/1748.65/1749.67/1752.16/1754.00) 1721.89 AlII,e,DVB 1670.79 AlII,e,AAQ00 1664.15 OIII],e,AAQ00 #(1660.81/1666.15) 1640.42 HeII,e,a,AAQ00 #(1640.34/1640.47) 1602 [NeIV],e,LAF80 1575 [NeV],e,LAF80 1549.05 CIV,a,e,AAQ00 #(1548.2/1550.77) 1531.18 SiII,e,AAQ00 #(1526.71/1533.43 SiII*) 1486.496 NIV],e 1402.34 OIV],e,AAQ00 #(1397.23/1399.78/1401.16/1404.81/1407.38) 1396.75 SiIV,a,e,AAQ00 #(1393.76,1402.77) 1362.46 BII,e,Baldwin 1335.7077 CII*,e,a 1335.31 CII,a,e,AAQ00 #(1334.53/1335.66/1335.71) 1309.2757 SiII*,e,a 1304.37 SiII,e,AAQ00 #(1306.82 in DVB) 1303.49 OI,a,e,AAQ00 #(1302.17/1304.86/1306.03) 1264.7377 SiII*,e,a 1263.31 SiII,a,e,AAQ00 #(1260.42/1264.74/1265.00) 1259.52 SII,a 1240.15 NV,a,e,AAQ00 #(1238.82,1242.80) 1218.34 OV, 1215.6701 Ly\ga,a,e,Bahcall+MYJ88tab4 1194.10 SiII,e,AAQ00 #(1197.39/1194.50/1193.29/1190.42) 1175.70 CIII*,e,DVB 1116 FeIII,UV1,e,DVB 1084.94 HeII,e,AAQ00 1073 SIV,e,LAF80 1066.66 ArI,e,DVB 1033.82 OVI,a,e,AAQ00 #(1031.93/1037.62) 1025.7223 Ly\gb,a,e,Bahcall+MYJ88tab4 1023 ArVI,e,LAF80 1020 NeVI,e,LAF80 1014 ,ArVI,e,LAF80 1002 ArVI,e,LAF80 993 HeII,e,LAF80 992 ArVI,e,LAF80 990.98 NIII,e,AAQ00 #(989.80/991.51/991.58) 977.02 CIII,e,AAQ00 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 937.06 SVI,e,AAQ00 932 ,ArII,e,LAF80 920 ArII,e,LAF80 917 NII,e,LAF80 833.80 OII,e,DVB ./ll_mostabs0100644000151400015140000000626107403435117012265 0ustar phallphall5897.5581 ,NaI,a,e,MYJ88 5891.5833 NaI,a,e,MYJ88 4227.918 CaI,a,Songaila+MYJ88 3969.591 CaII(CaH),a,Songaila+MYJ88 3934.777 CaII(CaK),a,Songaila+MYJ88 3945.1224 AlI,a,MYJ88 3720.9927 FeI,a,MYJ88 3083.0479 AlI,a,MYJ88 3021.5189 FeI,a,MYJ88 2967.7646 FeI,a,MYJ88 2852.9642 MgI,a,Bahcall+MYJ88 2803.531 ,MgII,a,e,Bahcall+MYJ88tab4 2796.352 MgII,a,e,Bahcall+MYJ88tab4 2722.450 CaI,a,MYJ88 2719.8331 FeI,a,MYJ88 2606.462 ,MnII,a,Bahcall+MYJ88 2600.1729 ,FeII,a,Bahcall+MYJ88tab4 2594.499 ,MnII,a,Bahcall+MYJ88 2586.6500 FeII,a,Bahcall+MYJ88tab4 2576.877 MnII,a,Bahcall+MYJ88 2523.6083 ,FeI,a,MYJ88 2515.0730 SiI,a,MYJ88 2501.8861 ,FeI,a,MYJ88 2484.0210 FeI,a,MYJ88,(strongest) 2463.3921 ,FeI,a,MYJ88 2382.7652 ,FeII,a,Bahcall+MYJ88tab4 2374.4612 ,FeII,a,Bahcall+MYJ88tab4 2344.2139 FeII,a,Bahcall+MYJ88tab4 2320.7437 ,NiI,a,MYJ88 2311.6688 NiI,a,MYJ88 2260.7805 FeII,a,Bahcall+MYJ88 2167.453 FeI,a,MYJ88 2066.161 ,CrII,a,MYJ88 2062.662 ZnII,a,Bahcall+MYJ88 2062.263 ,CrII,a,MYJ88 2056.254 CrII,a,MYJ88 2026.4768 MgI,Bahcall+MYJ88 2026.137 ZnII,Bahcall+MYJ88 1862.7895 ,AlIII,i,a,Bahcall+MYJ88tab4,cB58 1854.7164 AlIII,i,a,Bahcall+MYJ88tab4,cB58 1845.5203 SiI,a,MYJ88 1808.0126 SiII,i,a,Bahcall+MYJ88 1807.3110 SI,a,MYJ88 1751.910 ,NiII,i,a,MYJ88 1741.549 NiII,i,a,MYJ88 1709.600 NiII,i,a,MYJ88 1670.7874 AlII,i,a,Bahcall+cB58+MYJ88tab4 1656.9282 CI,a,MYJ88 1608.4511 FeII,i,a,Bahcall+cB58+MYJ88tab4 1560.3095 CI,a,MYJ88 1550.774 ,CIV,i,a,Bahcall+MYJ88tab4 1548.202 CIV,i,a,Bahcall+MYJ88tab4 1526.7071 SiII,i,a,Bahcall+MYJ88tab4,cB58 1473.9942 SI,a,MYJ88 1425.0300 SI,a,MYJ88 1402.770 ,SiIV,i,a,Bahcall+MYJ88tab4,cB58 1393.755 SiIV,i,a,Bahcall+MYJ88tab4,cB58 1370.132 NiII,i,a,MYJ88 1358.7730 CuII,a,MYJ88 1334.5323 CII,i,a,e,Bahcall+MYJ88tab4,cB58 1317.217 NiII,i,a,MYJ88 1304.3711 SiII,i,a,Bahcall+MYJ88tab4,cB58 1302.1685 OI,i,a,e,Bahcall+MYJ88tab4,cB58 1298.697 TiIII,a,MYJ88 1295.6526 SI,a,MYJ88 1277.2454 CI,i,a,MYJ88 1260.4223 SiII,i,a,Bahcall+MYJ88tab4,cB58 1242.804 ,NV,a,e,Bahcall+MYJ88tab4 1238.821 NV,a,i,e,Bahcall+MYJ88tab4 1215.6701 LyA,a,e,Bahcall+MYJ88tab4 1206.500 SiIII,i,a,Bahcall+MYJ88tab4,cB58 1200.7098 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1200.2233 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1199.5496 NI,i,a,Bahcall+MYJ88tab4,cB58 1193.2898 ,SiII,i,a,Bahcall+MYJ88tab4 1190.4160 SiII,i,a,Bahcall+MYJ88tab4 1144.939 FeII,a,Bahcall+MYJ88 1134.9803 ,NI,a,Bahcall+MYJ88 1134.4149 ,NI,a,Bahcall+MYJ88 1134.1653 NI,a,Bahcall+MYJ88 1128.008 PV,a,MYJ88 1122.526 FeIII,a,Bahcall+MYJ88 1121.975 FeII,a,Bahcall+MYJ88 1117.977 PV,a,MYJ88 1096.877 FeII,a,Bahcall+MYJ88 1083.990 NII,a,Bahcall+MYJ88tab4 1066.6599 ArI,a,MYJ88 1063.176 FeII,a,MYJ88 1062.671 SIV,a,MYJ88 1048.2199 ArI,a,MYJ88 1037.6155 ,OVI,a,Bahcall+MYJ88tab4 1036.3367 CII,a,Bahcall+MYJ88tab4 1031.9265 OVI,a,Bahcall+MYJ88tab4 1025.7223 LyB,a,Bahcall+MYJ88tab4 1020.6990 SiII,a,MYJ88 1012.504 SIII,a,MYJ88 989.8731 SiII,a,Bahcall+MYJ88 989.790 NIII,a,MYJ88tab4 988.7734 OI,a,MYJ88tab4 977.02 CIII,a,Bahcall+MYJ88tab4 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 971.7381 OI,a,MYJ88tab4 963.801 PII,a,MYJ88 953.9599 NI,a,MYJ88 950.657 PIV,a,MYJ88 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 944.525 SVI,a,MYJ88 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 933.376 SVI,a,MYJ88 917.118 PIII,a,MYJ88 915.612 NII,a,MYJ88tab4 ./ll_mostem0100644000151400015140000001116707403457507012131 0ustar phallphall18751.0 P\ga,e,AAQ00 12818.1 P\gb,e,AAQ00 10830.34 ,HeI10830.2,e,AAQ00 10830.25 HeI10830.2,e,AAQ00 10829.09 HeI,10830.2,e,AAQ00 9068.9 [SIII],AAQ00 8446.5 OI,AAQ00 7894.00 [FeXI],e,DVB 7892.10 [NiIII],e,DVB 7237.3 [ArIV],e,OSTp63 7137.80 [ArIII],e,wDVB #(7136 in LAF80) 7067.20 HeI,e,DVB 6732.67 ,[SII],e,wDVB #=6730.85 #[SII],e,AAQ00 (6734 in LAF80) 6718.29 [SII],e,wDVB #=6716.47 #[SII],e,AAQ00 6585.28 ,[NII],e,wDVB #=6583.39 #[NII],e,AAQ00 6564.61 H\ga,e,wDVB #=6562.80 #Halpha,e,AAQ00 6549.85 [NII],e,wDVB #=6548.06 #[NII],e,AAQ00 6376.30 [FeX],e,wDVB #=6374.53 #[FeX],e,AAQ00 6365.54 [OI],e,wDVB #=6363.78 #[OI],e,AAQ00 6312.1 [SIII],e,OSTp61 6302.05 [OI],e,wDVB #=6300.3 #[OI],e,AAQ00 6087.98 [FeVII],e,DVB 5977.0 HeII,e #(real?) 5877.29 HeI,e,wDVB #=5875.7 #HeI,e,AAQ00 5754.57 [NII],e,AAQ00 5722.30 [FeVII],e,wDVB #=5721.11 #[FeVII],e,AAQ00 5539.43 [ClIII],e,DVB 5310.59 [CaV],e,wDVB #=5309.18 #[CaV],e,AAQ00 5304.34 [FeXIV],e,DVB 5294 FeII,Opt48/49,e,DVB 5277.85 [FeVII],e,DVB 5199.83 [NI],e,AAQ00 5160.33 [FeVII],e,DVB 5008.24 [OIII],e,wDVB #=5006.84 #[OIII],e,AAQ00 4960.30 [OIII],e,wDVB #=4958.91 #[OIII],e,AAQ00 4931 FeII,Opt42,e,DVB 4922 HeI,e 4862.68 H\gb,a,e,wDVB #=4861.32 #Hbeta,a,e,AAQ00 4740.20 [ArIV],AAQ00 4720 [NeIV],e 4711.34 [ArIV],HeI,AAQ00 4687.02 HeII,e,wDVB #=4685.65 #HeII,e,AAQ00 (4685.4/4685.7) 4658 [FeIII],e #(also CIV in LAF80) 4650 WR,bump 4647 CIII,e 4641 NIII,e 4634 NIII,e 4571 MgI],e,OSTp389 #(MgI in LAF80) 4565 FeII,Opt37/38,e,DVB 4479 FeII,Opt37,e,DVB 4472.76 HeI,e,DVB,(4471) 4364.44 [OIII],e,wDVB #=4363.21 #[OIII],e,AAQ00 4341.68 H\gg,e,a,wDVB #=4340.46 #Hgamma,e,a 4320 [FeII],FeII,Opt21F/32e,DVB 4267 CII,e 4241 [FeII],Opt21F,e,DVB 4227 [FeV],e 4185 FeII,Opt27/28,e,DVB 4141 FeII,Opt27/28,e,DVB 4102.89 H\gd,e,a,wDVB #=4101.73 #H\gd,e,a 4073.63 [SII],e,wDVB #=4071 (4068.6/4076.35 in AAQ00, 4073.63 in DVB) 3971.20 H7,e,a,wDVB,(Balmer) #=3970.07 #H7,e,a (Balmer) 3968.58 [NeIII],e,wDVB #=3969 (3968/3970 in LAF80; 3967.47 in AAQ00) 3890.15 H8,e,a,wDVB,(Balmer) #=3889.1 #H8,e,a (Balmer) 3889.74 HeI,e,a,wDVB #=3888.9 #HeI,e,a (3888.65 in AAQ00) 3883.7 HeII,e 3869.85 [NeIII],e,wDVB #=3868.75 #[NeIII],e,AAQ00 3835 H9,(Balmer) 3798 H10,(Balmer) 3770 H11,(Balmer) 3759.99 [FeVII],e,DVB 3750 H12,(Balmer) 3734 H13,(Balmer) 3729.88 ,[OII],air3728.82 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3727.09 [OII],air3726.03 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3722 [SIII],e 3722 H14,(Balmer) 3712 H15,(Balmer) 3704 H16,(Balmer) 3697 H17,(Balmer) 3691 H18,(Balmer) 3588.30 HeI,e,DVB 3587.34 [FeVII],e,DVB 3499 FeII,e,DVB 3444 OIII,e 3429 OIII,e 3426.84 [NeV],e,wDVB #=3425.87 #[NeV],e,AAQ00 3346.82 [NeV],e,wDVB #=3345.83 #[NeV],e,AAQ00 3282 FeII,Opt1,e,DVB 3262 FeIOpt91,FeIIOpt1,e,DVB 3203.07 HeII,e,AAQ00 3188.67 HeI,e,a,AAQ00,wDVB 3133.70 OIII,e,a,wDVB 2965 FeII,UV78,e,DVB 2798.75 MgII,a,e,wDVB #=2797.92 #MgII,a,e,AAQ00 (2795.53/2802.71) 2672.04 OIII,e,DVB 2669.95 AlII],e,DVB 2627 FeII,UV1,e,DVB 2471.03 [OII],e,DVB 2423.83 [NeIV],e,DVB #(OSTp62: 2421.8/2424.5) 2326.44 CII],e,wDVB #=2326.58 AAQ00 (2324.21/2325.4/2326.11/2327.65/2328.84) 2321 [OIII],e,OSTp61 2321 FeII,many,e,DVB 2297 CIII,e 2222 FeII,UV118,UV376,e,DVB 2176 FeII,UV79,UV370,e,DVB 2141.57 NII],e,wDVB #=2141.36 #NII],e,AAQ00 (2139.01/2142.77) 2077 FeIII,UV48,e,DVB 2066.3 BIII,e,Baldwin 1989 FeIII,UV50,e,DVB 1957 FeIII,UV68,UV61,e,DVB 1908.73 CIII],e,AAQ00 1892.03 SiIII],e,AAQ00 1857.41 AlIII,a,e,AAQ00 #(1854.72/1862.79) 1814.73 [NeIII],e,DVB 1813.98 SiII,e,AAQ00 #(1808.1/1816.93/1817.45) 1788 FeII,UV191,e,DVB 1750.46 NIII],e,AAQ00 #(1746.82/1748.65/1749.67/1752.16/1754.00) 1721.89 AlII,e,DVB 1670.79 AlII,e,AAQ00 1664.15 OIII],e,AAQ00 #(1660.81/1666.15) 1640.42 HeII,e,a,AAQ00 #(1640.34/1640.47) 1549.05 CIV,a,e,AAQ00 #(1548.2/1550.77) 1531.18 SiII,e,AAQ00 #(1526.71/1533.43 SiII*) 1486.496 NIV],e 1402.34 OIV],e,AAQ00 #(1397.23/1399.78/1401.16/1404.81/1407.38) 1396.75 SiIV,a,e,AAQ00 #(1393.76,1402.77) 1362.46 BII,e,Baldwin 1335.7077 CII*,e,a 1335.31 CII,a,e,AAQ00 #(1334.53/1335.66/1335.71) 1309.2757 SiII*,e,a 1304.37 SiII,e,AAQ00 #(1306.82 in DVB) 1303.49 OI,a,e,AAQ00 #(1302.17/1304.86/1306.03) 1264.7377 SiII*,e,a 1263.31 SiII,a,e,AAQ00 #(1260.42/1264.74/1265.00) 1259.52 SII,a 1240.15 NV,a,e,AAQ00 #(1238.82,1242.80) 1218.34 OV, 1215.6701 Ly\ga,a,e,Bahcall+MYJ88tab4 1194.10 SiII,e,AAQ00 #(1197.39/1194.50/1193.29/1190.42) 1175.70 CIII*,e,DVB 1116 FeIII,UV1,e,DVB 1084.94 HeII,e,AAQ00 1066.66 ArI,e,DVB 1033.82 OVI,a,e,AAQ00 #(1031.93/1037.62) 1025.7223 Ly\gb,a,e,Bahcall+MYJ88tab4 990.98 NIII,e,AAQ00 #(989.80/991.51/991.58) 977.02 CIII,e,AAQ00 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 937.06 SVI,e,AAQ00 833.80 OII,e,DVB ./ll_strabs0100644000151400015140000000304207347726143012116 0ustar phallphall2803.531 ,MgII,a,e,Bahcall+MYJ88tab4 2796.352 MgII,a,e,Bahcall+MYJ88tab4 2600.1729 ,FeII,a,Bahcall+MYJ88tab4 2586.6500 FeII,a,Bahcall+MYJ88tab4 2382.7652 ,FeII,a,Bahcall+MYJ88tab4 2374.4612 ,FeII,a,Bahcall+MYJ88tab4 2344.2139 FeII,a,Bahcall+MYJ88tab4 2062.263 CrII,a,MYJ88 1862.7895 ,AlIII,i,a,Bahcall+MYJ88tab4,cB58 1854.7164 AlIII,i,a,Bahcall+MYJ88tab4,cB58 1670.7874 AlII,i,a,Bahcall+cB58+MYJ88tab4 1608.4511 FeII,i,a,Bahcall+cB58+MYJ88tab4 1550.774 ,CIV,i,a,Bahcall+MYJ88tab4 1548.202 CIV,i,a,Bahcall+MYJ88tab4 1526.7071 SiII,i,a,Bahcall+MYJ88tab4,cB58 1402.770 ,SiIV,i,a,Bahcall+MYJ88tab4,cB58 1393.755 SiIV,i,a,Bahcall+MYJ88tab4,cB58 1334.5323 CII,i,a,e,Bahcall+MYJ88tab4,cB58 1304.3711 ,SiII,i,a,Bahcall+MYJ88tab4,cB58 1302.1685 OI,i,a,e,Bahcall+MYJ88tab4,cB58 1260.4223 SiII,i,a,Bahcall+MYJ88tab4,cB58 1242.804 ,NV,a,e,Bahcall+MYJ88tab4 1238.821 NV,a,i,e,Bahcall+MYJ88tab4 1215.6701 Ly\ga,a,e,Bahcall+MYJ88tab4 1206.500 SiIII,i,a,Bahcall+MYJ88tab4,cB58 1200.7098 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1200.2233 ,NI,i,a,Bahcall+MYJ88tab4,cB58 1199.5496 NI,i,a,Bahcall+MYJ88tab4,cB58 1193.2898 ,SiII,i,a,Bahcall+MYJ88tab4 1190.4160 SiII,i,a,Bahcall+MYJ88tab4 1083.990 NII,a,Bahcall+MYJ88tab4 1037.6155 ,OVI,a,Bahcall+MYJ88tab4 1036.3367 CII,a,Bahcall+MYJ88tab4 1031.9265 OVI,a,Bahcall+MYJ88tab4 1025.7223 Ly\gb,a,Bahcall+MYJ88tab4 989.790 NIII,a,MYJ88tab4 988.7734 OI,a,MYJ88tab4 977.02 CIII,a,Bahcall+MYJ88tab4 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 971.7381 OI,a,MYJ88tab4 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 915.612 NII,a,MYJ88tab4 ./ll_strem0100644000151400015140000000452407403446550011752 0ustar phallphall18751.0 Pa,Paschen_alpha,e,AAQ00 12818.1 Pb,Paschen_beta,e,AAQ00 10830.2 HeI,triplet,e,AAQ00 9068.9 [SIII],AAQ00 6732.67 ,[SII],e,wDVB #=6730.85 #[SII],e,AAQ00 (6734 in LAF80) 6718.29 [SII],e,wDVB #=6716.47 #[SII],e,AAQ00 6585.28 ,[NII],e,wDVB #=6583.39 #[NII],e,AAQ00 6564.61 H\ga,Halpha,e,wDVB #=6562.80 #Halpha,e,AAQ00 6549.85 [NII],e,wDVB #=6548.06 #[NII],e,AAQ00 6365.54 ,[OI],e,wDVB #=6363.78 #[OI],e,AAQ00 6302.05 [OI],e,wDVB #=6300.3 #[OI],e,AAQ00 5877.29 HeI,e,wDVB #=5875.7 #HeI,e,AAQ00 5294 FeII,Opt48/49,e,DVB 5008.24 ,[OIII],e,wDVB #=5006.84 #[OIII],e,AAQ00 4960.30 [OIII],e,wDVB #=4958.91 #[OIII],e,AAQ00 4862.68 H\gb,Hbeta,a,e,wDVB #=4861.32 #Hbeta,a,e,AAQ00 4687.02 HeII,e,wDVB #=4685.65 #HeII,e,AAQ00 (4685.4/4685.7) 4565 FeII,Opt37/38,e,DVB 4364.44 [OIII],e,wDVB #=4363.21 #[OIII],e,AAQ00 4341.68 H\gg,Hgamma,e,a,wDVB #=4340.46 #Hgamma,e,a 4102.89 H\gd,Hdelta,e,a,wDVB #=4101.73 #Hdelta,e,a 3968.58 [NeIII],e,wDVB #=3969 (3968/3970 in LAF80; 3967.47 in AAQ00) 3889.74 HeI,e,a,wDVB #=3888.9 #HeI,e,a (3888.65 in AAQ00) 3869.85 [NeIII],e,wDVB #=3868.75 #[NeIII],e,AAQ00 3729.88 ,[OII],#air3728.82 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3727.09 [OII],#air3726.03 #[OII]3727,e,AAQ00 (avg: 3728.48 in DVB) 3426.84 ,[NeV],e,wDVB #=3425.87 #[NeV],e,AAQ00 3346.82 [NeV],e,wDVB #=3345.83 #[NeV],e,AAQ00 3188.67 HeI,e,a,AAQ00,wDVB 3133.70 OIII,e,a,wDVB 2965 FeII,UV78,e,DVB 2798.75 MgII,a,e,wDVB #=2797.92 #MgII,a,e,AAQ00 (2795.53/2802.71) 2627 FeII,UV1,e,DVB 2423.83 [NeIV],e,DVB #(OSTp62: 2421.8/2424.5) 2326.44 CII],e,wDVB #=2326.58 AAQ00 (2324.21/2325.4/2326.11/2327.65/2328.84) 2077 FeIII,UV48,e,DVB 1989 FeIII,UV50,e,DVB 1908.73 CIII],e,AAQ00 1892.03 SiIII],e,AAQ00 1857.41 AlIII,a,e,AAQ00 #(1854.72/1862.79) 1750.46 NIII],e,AAQ00 #(1746.82/1748.65/1749.67/1752.16/1754.00) 1664.15 OIII],e,AAQ00 #(1660.81/1666.15) 1640.42 HeII,e,a,AAQ00 #(1640.34/1640.47) 1549.05 CIV,a,e,AAQ00 #(1548.2/1550.77) 1402.34 OIV],e,AAQ00 #(1397.23/1399.78/1401.16/1404.81/1407.38) 1396.75 SiIV,a,e,AAQ00 #(1393.76,1402.77) 1335.31 CII,a,e,AAQ00 #(1334.53/1335.66/1335.71) 1303.49 OI,a,e,AAQ00 #(1302.17/1304.86/1306.03) 1240.15 NV,a,e,AAQ00 #(1238.82,1242.80) 1215.6701 Ly\ga,a,e,Bahcall+MYJ88tab4 1033.82 OVI,a,e,AAQ00 #(1031.93/1037.62) 1025.7223 Ly\gb,a,e,Bahcall+MYJ88tab4 972.5368 Ly\gg,e,a,Bahcall+MYJ88tab4 949.7430 Ly\gd,e,a,Bahcall+MYJ88tab4 937.8035 Ly\ge,e,a,Bahcall+MYJ88tab4 ./phist.cl0100644000151400015140000000211007404171335011637 0ustar phallphall# Package script task for the PHIST package # Enter the correct pathname for the package directory, # using the following format: #set phist = /astr16/users/phall/IRAF/PHIST/ set phist = /home/phall/IRAF/PHIST/ package phist reset helpdb = (envget ("helpdb") // ",phist$helpdb.mip") task dec2seg = phist$dec2seg.cl task doigi = phist$doigi.cl task hexprint = phist$hexprint.cl task ionlte = phist$ionlte.cl task lplots = phist$lplots.cl task lplots2 = phist$lplots2.cl task mkfitsobs = phist$mkfitsobs.cl task mkobs = phist$mkobs.cl task sbqgr = phist$sbqgr.cl task sbqsx = phist$sbqsx.cl task sbqsx2 = phist$sbqsx2.cl task seg2dec = phist$seg2dec.cl task spdata = phist$spdata.cl task splat = phist$splat.cl task splet = phist$splet.cl task unredden = phist$unredden.cl task vcalc = phist$vcalc.cl task vplot = phist$vplot.cl task vplots = phist$vplots.cl task wcalc = phist$wcalc.cl task zplot = phist$zplot.cl clbye() ./phist.men0100644000151400015140000000243107404171345012027 0ustar phallphall PHIST --- Pat Hall's IRAF SDSS Tasks dec2seg - convert decimal coordinates to sexigesimal doigi - run existing IGI script hexprint - convert a decimal number to hexadecimal ionlte - calculate LTE ratios of MgI-III,AlI-IV,FeI-IV for given n_e,T ranges lplots - overplot wavelengths of emission / absorption lines for given z lplots2 - 2-panel lplots mkfitsobs - make coadded FITS and text spectrum mkobs - make text spectrum from FITS spectrum sbqgr - sample task for converting GR's SX .tbl output to formatted ASCII sbqsx - sample task for converting SX .tbl output to formatted ASCII sbqsx2 - another task for converting SX .tbl output to formatted ASCII seg2dec - convert sexigesimal coordinates to decimal spdata - get objid,mags,ra,dec,objtype from spectrum (plate,mjd,fiber) splat - interactively SPLOT a specific observation (plate+mjd+fiber) splet - non-interactively SPECPLOT an observation and its error spectrum unredden - deredden spectrum using SMC or LMC extinction curve vcalc - calculate velocity offset in quasar rest frame vplot - overplot wavelengths of emission / absorption lines in velocity space vplots - multiple vplot wcalc - calculate vacuum wavelength from air wavelength zplot - plot spectrum in the rest frame at the specified z ./phist.hd0100644000151400015140000000245707404171340011646 0ustar phallphall# Help directory for the PHIST package # Enter the proper pathname for the package's help files, # using the following format: $doc = "phist$doc/" dec2seg hlp = doc$dec2seg.hlp, src = dec2seg.cl doigi hlp = doc$doigi.hlp, src = doigi.cl hexprint hlp = doc$hexprint.hlp, src = hexprint.cl ionlte hlp = doc$ionlte.hlp, src = ionlte.cl lplots hlp = doc$lplots.hlp, src = lplots.cl lplots2 hlp = doc$lplots2.hlp, src = lplots2.cl mkfitsobs hlp = doc$mkfitsobs.hlp, src = mkfitsobs.cl mkobs hlp = doc$mkobs.hlp, src = mkobs.cl sbqgr hlp = doc$sbqgr.hlp, src = sbqgr.cl sbqsx hlp = doc$sbqsx.hlp, src = sbqsx.cl sbqsx2 hlp = doc$sbqsx2.hlp, src = sbqsx2.cl seg2dec hlp = doc$seg2dec.hlp, src = seg2dec.cl spdata hlp = doc$spdata.hlp, src = spdata.cl splat hlp = doc$splat.hlp, src = splat.cl splet hlp = doc$splet.hlp, src = splet.cl unredden hlp = doc$unredden.hlp, src = unredden.cl vcalc hlp = doc$vcalc.hlp, src = vcalc.cl vplot hlp = doc$vplot.hlp, src = vplot.cl vplots hlp = doc$vplots.hlp, src = vplots.cl wcalc hlp = doc$wcalc.hlp, src = wcalc.cl zplot hlp = doc$zplot.hlp, src = zplot.cl ./helpdb.mip0100644000151400015140000000771607404201157012152 0ustar phallphallD)B2?X HUB=B,3rootdefdir=chavez!/home/phall/IRAF/PHIST/_phist_phist.hd HBZB.4>QH4_phistdefdir=chavez!/home/phall/IRAF/PHIST/phistphist.menphist.hlpphist.hdphist.cl I-<DT_es|!.4BKQ_hn| "+<HN\ekyphistdefdir=chavez!/home/phall/IRAF/PHIST/doc=phist$doc/dec2segdoc$dec2seg.hlpdec2seg.cldoigidoc$doigi.hlpdoigi.clhexprintdoc$hexprint.hlphexprint.clionltedoc$ionlte.hlpionlte.cllplotsdoc$lplots.hlplplots.cllplots2doc$lplots2.hlplplots2.clmkfitsobsdoc$mkfitsobs.hlpmkfitsobs.clmkobsdoc$mkobs.hlpmkobs.clsbqgrdoc$sbqgr.hlpsbqgr.clsbqsxdoc$sbqsx.hlpsbqsx.clsbqsx2doc$sbqsx2.hlpsbqsx2.clseg2decdoc$seg2dec.hlpseg2dec.clspdatadoc$spdata.hlpspdata.clsplatdoc$splat.hlpsplat.clspletdoc$splet.hlpsplet.clunreddendoc$unredden.hlpunredden.clvcalcdoc$vcalc.hlpvcalc.clvplotdoc$vplot.hlpvplot.clvplotsdoc$vplots.hlpvplots.clwcalcdoc$wcalc.hlpwcalc.clzplotdoc$zplot.hlpzplot.cl HUN N>Dl_rootroot.hd_phistchavez!/home/phall/IRAF/PHIST/_phist.hdphistchavez!/home/phall/IRAF/PHIST/phist.menchavez!/home/phall/IRAF/PHIST/phist.hlpchavez!/home/phall/IRAF/PHIST/phist.clchavez!/home/phall/IRAF/PHIST/phist.hdchavez!/home/phall/IRAF/PHIST/phist.men_index)B2?chavez!/home/phall/IRAF/PHIST/_phist.hda'^5chavez!/home/phall/IRAF/PHIST/phist.hd)B"root.hd'^B./README0100644000151400015140000000200107404202026011037 0ustar phallphall PHIST -- Pat Hall's IRAF SDSS Tasks v.2 011207 Read "phist.hlp" ("phelp phist opt=sys" in IRAF) for an introduction. Entire package available as a compressed tarfile from http://astro.princeton.edu/~pathall/phist2.tar.gz To install, enter the proper pathnames in "phist.cl" and "phist.hd", load the IRAF "softools" package, and type "mkhelpdb root.hd helpdb.mip", deleting the old helpdb.mip if necessary. See "phist.hlp" for how to include the package in your default IRAF startup. v.1 001206 Read "phist.hlp" ("phelp phist opt=sys" in IRAF) for an introduction. Entire package available as a compressed tarfile from http://astro.princeton.edu/~pathall/phist1.tar.gz To install, enter the proper pathnames in "phist.cl" and "phist.hd", load the IRAF "softools" package, and type "mkhelpdb root.hd helpdb.mip", deleting the old helpdb.mip if necessary. See "phist.hlp" for how to include the package in your default IRAF startup. ./root.hd0100644000151400015140000000012607213270162011471 0ustar phallphall# Root help directory for Pat Hall's IRAF SDSS Tasks package _phist pkg = _phist.hd ./phist.hlp0120777000151400015140000000000007365346114014437 2doc/phist.hlpustar phallphall./splet.cl0100644000151400015140000001010107213267143011637 0ustar phallphallprocedure splet(plate,mjd,fiber) # splet.cl -- non-interactively plot an observation and its error spectrum # # REQUIRES # --noao.onedspec package # # ASSUMES # --storage directory naming conventions idlspec2d$0###/ & spectra1d$###/ # for 3-digit plate codes; note leading zero in one case but not other # # NOTES # --CURRENTLY ERROR PLOTTING ONLY WORKS FOR SPECTRO1D FORMAT DATA! # For idlspec2d format, use lplots with z=0 em=none abs=none errplot+ # --formats for the two pipelines' spectra are different: # BAND idlspec2d spectro1d # 0 data - # 1 1/sigma^2 data # 2 AND continuum-subtracted data # 3 OR sigma # 4 dispersion mask bits # --spectra from the same plate are stored differently in the two pipelines: # in idlspec2d, you can browse all fibers in a plate, but you can't # switch to the error spectrum etc. for any fibers; # in spectro1d, you can switch to the error spectrum etc. for the fiber, # but you can't browse any other fibers in the plate. # # 001205: created by PBH # # TODO: # **ymax parameter string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of Plate observation"} int fiber {prompt="Fiber number (leading zeros optional)"} string datatype="data" {enum="data|err|contsub|and|or|dispersion|mask",prompt="Plot: data|err|contsub|and|or|dispersion|mask"} bool schlegel=no {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} bool lowerlim=no {prompt="Plot from min. flux in spectrum instead of 0?"} bool errplot=no {prompt="Overplot error spectrum (spectro1d format only)?"} bool echo=no {prompt="Echo actual splot command?"} struct *list begin real miny string plata, fecha, camino, cero, code, fibra, sminy int venda bool princeton, eco, go, errores, lowlim plata = plate fecha = mjd fibra = fiber code = datatype princeton = schlegel if (!princeton) { camino = spectro1d } else { camino = idlspec2d } lowlim = lowerlim miny = 0 ; sminy = "0" if (lowlim) { miny = INDEF sminy = "INDEF" } errores = errplot eco = echo cero = "0" go = yes if (!princeton) { if (code=="data") { venda=1 } else if (code=="err") { venda=3 } else if (code=="contsub") { venda=2 } else if (code=="mask") { venda=4 } else if (code=="and") { go=no } else if (code=="or") { go=no } else if (code=="dispersion") { go=no } } else { if (code=="data") { venda=0 } else if (code=="err") { venda=1 } else if (code=="and") { venda=2 } else if (code=="or") { venda=3 } else if (code=="dispersion") { venda=4 } else if (code=="contsub") { go=no } else if (code=="mask") { go=no } } if (go) { #--splot spectro1d format data, using leading zero only where needed if (!princeton) { if ((strlen(plata)!=3)) { cero = "" } if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } if (errores) { if (eco) { print ("specplot "//camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0] aper="/venda//",3 band=1 autolay- scale=1 offset=0 step=0 yscale+ ymin="//sminy) } specplot (camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", aper=venda//",3", band=1, autolayout-, scale=1, offset=0, step=0, yscale+, ymin=miny) } else { if (eco) { print ("splot "//camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0] line="/venda//" band=1") } splot (camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", line=venda, band=1) } } else { #--splot idlspec2d format data, adding leading zero if needed if ((strlen(plata)==3)) { plata = "0"//plata } if (eco) { print ("splot "//camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"] band=1") } splot (camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"]", band=1) } } else { print ("FATAL ERROR: chosen pipeline doesn't have that datatype.") } end ./spdata.cl0100644000151400015140000000452007312454067011777 0ustar phallphallprocedure spdata(plate,mjd,fiber) # spdata.cl -- get object data from spectrum # # ASSUMES # --storage directory naming conventions idlspec2d$0###/ & spectra1d$###/ # for 3-digit plate codes; note leading zero in one case but not other # # 001220: created by PBH # # **add idlspec2d support string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of Plate observation"} int fiber {prompt="Fiber number (leading zeros optional)"} bool schlegel=no {prompt="Use idlspec2d format Spectro data?"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} struct *list begin string plata, fecha, camino, cero, code, fibra, path int venda bool princeton, eco, go plata = plate fecha = mjd fibra = fiber princeton = schlegel if (!princeton) { camino = spectro1d } else { camino = idlspec2d } if (camino==".") { path="" } else { path=camino//plata//"/" } cero = "0" go = yes if (!princeton) { venda=1 } else { venda=0 } if (go) { #--spectro1d format data, using leading zero only where needed if (!princeton) { if ((strlen(plata)!=3)) { cero = "" } if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } hsel (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", "plateid,mjd,fiberid,objid,raobj,decobj,mag,objtype", expr+) # hsel (camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", "plateid,mjd,fiberid,objid,raobj,decobj,mag,objtype", expr+) } else { ##--idlspec2d format data, adding leading zero if needed # if ((strlen(plata)==3)) { # plata = "0"//plata # } # hsel (camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"]", "plateid,mjd,fiberid,objid,raobj,decobj,mag,objtype", expr+) if ((strlen(plata)!=3)) { cero = "" } if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } hsel ("spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", "plateid,mjd,fiberid,objid,raobj,decobj,mag,objtype", expr+) } } else { print ("FATAL ERROR: chosen pipeline doesn't have that datatype.") } end ./ll_feiiabs0100644000151400015140000001742407403434726012227 0ustar phallphall2600.172 ,UV1,cem50,2600.1729,Bahcall+MYJ88tab4, 2612.653 ,UV1,cem50, 2618.399 ,UV1,cem50, 2621.1898 ,UV1,cem50, 2622.451 ,UV1,cem50, 2586.6498 ,UV1,cem50,2586.6500,Bahcall+MYJ88tab4, 2599.146 ,UV1,cem50, 2607.865 ,UV1,cem50, 2614.600 ,UV1,cem50, 2626.447 ,UV1,cem50, 2631.8295 ,UV1,cem50, 2629.075 ,UV1,cem50, 2632.106 1,cem50, 2382.761 ,UV2, 2396.357 ,UV2, 2405.614 ,UV2, 2411.254 ,UV2, 2414.042 2, 2374.458 ,UV2, 2389.357 ,UV2, 2399.967 ,UV2, 2407.392 ,UV2, 2411.795 ,UV2, 2367.587 ,UV2, 2383.787 ,UV2, 2396.146 ,UV2, 2405.162 ,UV2, 2344.213 ,UV3, 2333.514 ,UV3, 2328.105 ,UV3, 2365.548 ,UV3, 2349.019 ,UV3, 2338.722 ,UV3, 2359.832 ,UV3, 2344.996 ,UV3, 2381.483 3, 2298.9 133,0059, 2253.817 ,UV4,cem50, 2251.635 ,UV4,cem50, 2250.869 ,UV4,cem50, 2237.375 ,UV4,cem50, 2268.285 ,UV4,cem50, 2261.553 ,UV4,cem50, 2256.678 ,UV4,cem50, 2280.622 4,cem50, 2249.877 ,UV5,Bahcall+cem50?, 2252.254 ,UV5,cem50, 2255.099 ,UV5,cem50, 2266.692 ,UV5,cem50, 2263.386 ,UV5,cem50, 2260.928 ,UV5,cem50, 2269.264 ,UV5,cem50, 2269.546 5,cem50, 2146.734 ,UV6,cem50, 2140.351 ,UV6,cem50, 2138.409 ,UV6,cem50, 2154.551 ,UV6,cem50, 2159.830 6,cem50, 1848.231 ,UV7,5,cem50, 1857.935 7,12,cem50, 1636.331 ,UV8,0059, 1634.350 ,UV8,0059, 1631.128 ,UV8,0059, 1629.160 ,UV8,0059, 1625.912 ,UV8,0059, 1621.686 ,UV8,0059, 1618.468 ,UV8,0059, 1639.401 8,0059, 1260.542 ,UV9,20,cem50, 1267.437 ,UV9,25,cem50, 1272.638 ,UV9,15,cem50, 1266.694 ,UV9,20,cem50, 1272.001 ,UV9,25,cem50, 1271.235 ,UV9,1,cem50, 1275.154 ,UV9,15,cem50, 1275.801 9,20,cem50, 2733.2499 ,UV32,cem50, 2760.151 ,UV32,cem50, 2776.158 ,UV32,cem50, 2718.338 ,UV32,cem50, 2791.575 ,UV32,cem50, 2797.862 32,cem50, 2512.131 ,UV33,cem50, 2531.843 ,UV33,cem50, 2505.972 ,UV33,cem50, 2527.597 ,UV33,cem50, 2543.0795 33,cem50, 2451.848 ,UV34,cem50, 2450.481 ,UV34,cem50, 2485.826 34,cem50, 2348.837 ,UV36,cem50, 2361.009 ,UV36,cem50, 2369.317 ,UV36,cem50, 2375.917 ,UV36,cem50, 2380.001 ,UV36,cem50, 2383.969 ,UV36,cem50, 2385.113 ,UV36,cem50, 2399.967 ,UV36,cem50, 2403.328 36,cem50, 1709.560 ,UV37,cem50, 1724.963 37,cem50, 1702.045 ,UV38,cem50, 1713.002 ,UV38,cem50, 1720.621 ,UV38,cem50, 1696.800 ,UV38,cem50, 1708.627 ,UV38,cem50, 1718.123 ,UV38,cem50, 1706.179 ,UV38,cem50, 1726.394 38,cem50, 1686.717 ,UV39,cem50, 1716.569 ,UV39,cem50, 1724.847 39,cem50, 1670.759 ,UV40,25,cem50 1659.487 ,UV40,20,cem50 1663.226 ,UV40,15,cem50 1674.716 ,UV40,10,cem50 1686.457 ,UV40,8,cem50 1670.759 ,UV40,25,cem50 1671.010 ,UV40,1,cem50 1698.190 40,0,cem50 1658.785 ,UV41,15 1676.871 ,UV41,1 1685.953 ,UV41,5 1691.289 ,UV41,8 1674.258 ,UV41,2 1693.961 41,0 1637.400 ,UV42,15 1643.588 ,UV42,15 1649.444 ,UV42,15 1654.484 ,UV42,5 1652.489 ,UV42,0 1662.369 42,0 1612.814 ,UV43,20,cem50 1625.525 ,UV43,20,cem50 1633.907 ,UV43,15,cem50 1610.167 ,UV43,15,cem50 1623.102 ,UV43,8,cem50 1632.672 ,UV43,1,cem50 1640.167 43,12,cem50 1569.670 ,UV44,12 1580.635 ,UV44,25 1584.954 ,UV44,15 1566.825 ,UV44,20 1574.778 ,UV44,0 1581.293 ,UV44,8 1588.295 44,10 1559.106 ,UV45,20 1563.790 ,UV45,25 1570.248 ,UV45,20 1574.931 ,UV45,20 1550.260 ,UV45,1 1568.031 ,UV45,8 1572.750 ,UV45,1 1573.831 ,UV45,5 1577.158 45,1 1558.543 ,UV46,10 1558.706 46,10 1412.834 ,UV47,12 1424.047 ,UV47,8 1424.747 47,12 2927.440 ,UV60,cem50, 2954.637 ,UV60,cem50, 2971.377 ,UV60,cem50, 2917.004 ,UV60,cem50, 2946.123 ,UV60,cem50, 2976.807 ,UV60,cem50, 2908.706 ,UV60,cem50, 2940.366 ,UV60,cem50, 2962.137 ,UV60,cem50, 2980.216 60,cem50, 2881.595 ,UV61,cem50, 2869.716 ,UV61,cem50, 2862.027 ,UV61,cem50, 2893.670 ,UV61,cem50, 2918.319 61,cem50, 2750.1 ,UV62,0059, 2747.8 ,UV62,0059, 2747.3 ,UV62,0059, 2744.0 ,UV62,0059, 2740.4 ,UV62,0059, 2758.5 62,0059, 2740.356 ,UV63,cem50, 2747.790 ,UV63,cem50, 2749.991 ,UV63,cem50, 2750.295 ,UV63,cem50, 2715.219 ,UV63,cem50, 2728.346 ,UV63,cem50, 2737.778 ,UV63,cem50, 2769.758 ,UV63,cem50, 2762.629 ,UV63,cem50, 2773.538 63,cem50, 2563.303 ,UV64,cem50,2563.304,DEA01,a4D, 2564.240 ,UV64,cem50,2564.245,DEA01,a4D, 2567.677 ,UV64,cem50,2567.683,UV64,0059, 2592.317 ,UV64,cem50,2592.318,UV64,0059, 2583.355 ,UV64,cem50,2583.357,UV64,0059, 2578.692 ,UV64,cem50,2578.695,UV64,0059, 2594.498 ,UV64,cem50,2594.504,UV64,0059, 2611.855 64,cem50,2611.853,UV64,0059, 1859.744 ,UV65,15,cem50, 1841.701 ,UV65,10,cem50, 1842.256 ,UV65,0,cem50, 1826.991 ,UV65,1,cem50, 1851.517 ,UV65,1,cem50, 1874.931 65,0,cem50, 1818.509 ,UV66,2,cem50, 1822.150 ,UV66,1,cem50, 1831.724 ,UV66,1,cem50, 1833.071 66,0,cem50, 1781.704 67,0059, 1635.389 ,UV68,35,cem50, 1641.761 ,UV68,25,cem50, 1646.187 ,UV68,20,cem50, 1647.161 ,UV68,25,cem50, 1649.583 ,UV68,20,cem50, 1650.709 ,UV68,20,cem50, 1654.105 ,UV68,5,cem50, 1655.042 68,1,cem50, 1413.707 69,25,cem50, 1214.409 ,UV70,10,cem50, 1220.882 70,5,cem50, 2985.252 ,UV78,cem50 2965.902 ,UV78,cem50 2965.495 ,UV78,cem50 2948.5197 ,UV78,cem50 2945.2599 ,UV78,cem50 2986.416 ,UV78,cem50 3003.525 78,cem50 2165.016 ,UV79,cem50 2174.401 79,cem50 2098.178 ,UV80,cem50 2130.932 80,cem50 2073.808 ,UV81,cem50 2108.807 81,cem50 2057.990 82,cem50 2016.150 ,UV83,20,cem50 2017.741 ,UV83,15,cem50 2008.101 ,UV83,15,cem50 2008.360 ,UV83,12,cem50 2013.918 ,UV83,15,cem50 2004.529 ,UV83,2,cem50 2021.390 83,25,cem50 1709.678 ,UV84,15,cem50 1715.036 ,UV84,0,cem50 1707.411 ,UV84,2,cem50 1708.259 ,UV84,1,cem50 1715.507 ,UV84,12,cem50 1720.042 84,10,cem50 1689.821 ,UV85,10,cem50 1690.781 ,UV85,8,cem50 1699.199 ,UV85,2,cem50 1693.477 ,UV85,0,cem50 1701.952 ,UV85,2,cem50 1708.68 85,?,cem50 1296.088 ,UV86,20,cem50 1299.984 86,0,cem50 1291.594 ,UV87,15,cem50 1294.914 ,UV87,12,cem50 1298.815 87,2,cem50 1290.204 88,15,cem50 2159.196 ,UV89,25,cem50 2183.984 ,UV89,12,cem50 2188.362 89,10,cem50 2162.702 ,UV90,20,cem50 2176.126 90,25,cem50 2078.826 ,UV91,8,cem50 2074.856 ,UV91,8,cem50 2095.650 ,UV91,2,cem50 2097.656 91,0,cem50 2064.331 ,UV92,25,cem50 2080.908 92,20,cem50 2041.342 ,UV93,25,cem50 2029.835 ,UV93,8,cem50 2051.685 93,25,cem50 2019.423 ,UV94,25,cem50 2033.060 94,25,cem50 1993.289 95,8,cem50 1935.296 ,UV96,15,cem50 1917.337 ,UV96,15,cem50 1936.781 96,20,cem50 1860.040 ,UV97,20,cem50 1876.835 97,15,cem50 1835.869 ,UV98,15,cem50 1846.581 98,12,cem50 1772.518 ,UV99,15,cem50 1793.371 99,10,cem50 1760.415 ,UV100,20,cem50 1769.667 100,1,cem50 1746.816 ,UV101,20,cem50 1761.379 101,25,cem50 1673.470 ,UV102,15,cem50 1679.388 102,15,cem50 1365.590 103,12,cem50 2342.955 104,2,cem50 2312.738 ,UV105,1,cem50 2284.928 ,UV105,0,cem50 2340.125 105,2,cem50 2153.0 ,UV106,0059, 2177.7 106,0059, 2076.344 ,UV107,5,cem50, 2072.482 ,UV107,10,cem50, 2095.306 107,1,cem50, 2088.191 ,UV108,25,cem50, 2111.392 108,15,cem50, 2055.928 ,UV109,20,cem50, 2066.665 109,15,cem50, 1731.038 ,UV110,10,cem50, 1733.403 110,1,cem50, 1360.870 111,5,cem50, 2214.369 ,UV168,cem50, 2220.580 ,UV168,cem50, 2221.851 ,UV168,cem50, 2224.173 ,UV168,cem50, 2211.801 ,UV168,cem50, 2214.4098 ,UV168,cem50, 2217.739 ,UV168,cem50, 2223.138 ,UV168,cem50, 2228.0997 ,UV168,cem50, 2228.2897 168,cem50, 1786.752 ,UV191,0059, 1785.272 ,UV191,0059, 1787.996 191,0059, 3295.81 ,Opt1,GCC,air? 3302.86 ,Opt1,GCC,air? 3277.25 ,Opt1,GCC,air? 3281.29 ,Opt1,GCC,air? 3303.47 Opt1,GCC,air? 3914.48 Opt3,GCC,air? 3463.97 Opt4,GCC,air? 3383 ,Opt5,GCC,air? 3405 Opt5,GCC,air? 3213.31 ,Opt6,GCC,air? 3210.45 ,Opt6,GCC,air? 3227.73 Opt6,GCC,air? 3183.31 ,Opt7,GCC,air? 3185.32 ,Opt7,GCC,air? 3163.09 ,Opt7,GCC,air? 3196.08 Opt7,GCC,air? 3608.86 ,Opt23,GCC,air? 3631.46 Opt23,GCC,air? 3040.43 ,Opt30,GCC,air? 3042.02 ,Opt30,GCC,air? 3042.66 Opt30,GCC,air? 3135.36 ,Opt82,GCC,air? 3133.05 ,Opt82,GCC,air? 3114.30 ,Opt82,GCC,air? 3116.59 ,Opt82,GCC,air? 3114.68 ,Opt82,GCC,air? 3144.75 Opt82,GCC,air? 3170.50 ,Opt157,GCC,air? 3180.16 Opt157,GCC,air? 3071.12 ,Opt181,GCC,air? 3076.44 ,Opt181,GCC,air? 3048.99 ,Opt181,GCC,air? 3036.96 ,Opt181,GCC,air? 3078.68 Opt181,GCC,air? 2178.755 ,FeIUV21,35,cem50 2187.876 ,FeIUV21,40,cem50 2187.167 ,FeIUV21,40,cem50 2192.521 ,FeIUV21,60,cem50 2196.726 ,FeIUV21,50,cem50 2201.410 ,FeIUV21,15,cem50 2201.056 ,FeIUV21,15,cem50 2167.449 FeIUV21,100,cem50 ./sbqgr.cl0100644000151400015140000000432007403675057011644 0ustar phallphallprocedure sbqgr(tblname,sortmag) # sbqgr.cl -- task to format GR's SX output for Sloan Bright Quasar survey # # REQUIRES # --ctio package # --the following in your login.cl or loginuser.cl : # task $paste = "$foreign" # # 001118: created by PBH string tblname {prompt="Name of SX query output table (WITHOUT .tbl extension"} string sortmag {enum="u|g|r|i|z",prompt="Sort reformatted table on what magnitude?"} string countfile="" {prompt="Output size of reformatted table to what file?"} struct *list begin string mesanombre, alaclasemag, temporal, cuenta, intermedio, uno, dos string nombremesa int uf1, gf1, rf1, if1, zf1, uf2, gf2, rf2, if2, zf2, st, ot mesanombre = tblname nombremesa = mesanombre//".tbl" alaclasemag = sortmag cuenta = countfile intermedio = mesanombre//".sbq" temporal = mktemp("temp") uno = mktemp("tempuno") dos = mktemp("tempdos") #--create comments file grep ("'#'", nombremesa, >> mesanombre//".comments") #--create & count intermediate file filecalc (nombremesa, "$1;$3;$2;$4;$5;$18;$19;$6;$11;$7;$12;$8;$13;$9;$14;$10;$15;$6-$7;sqrt($11**2.+$12**2.);$7-$8;sqrt($12**2.+$13**2.);$8-$9;sqrt($13**2.+$14**2.);$9-$10;sqrt($14**2.+$15**2.)", format="%4d %1d %2d %5d %5d %11.7f %11.7f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f", >> uno) fields (nombremesa, "16-17", >> temporal) list = temporal while (fscan (list,uf1,uf2) !=EOF) { printf ("%08x %08x\n", uf1, uf2, >> dos) } paste (uno, dos, >> intermedio) if (cuenta != "") { count (intermedio, >> cuenta) } else { count (intermedio) } #--sort output file if (alaclasemag == "u") { sort(intermedio,col=8,num+,rev-, >> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "g") { sort(intermedio,col=10,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "r") { sort(intermedio,col=12,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "i") { sort(intermedio,col=14,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } else if (alaclasemag == "z") { sort(intermedio,col=16,num+,rev-,>> mesanombre//".sbqsort"//alaclasemag) } #--delete intermediate file(s) del (intermedio, ver-) del (temporal, ver-) del (uno, ver-) del (dos, ver-) end ./vplots.cl0100644000151400015140000003075407403704664012064 0ustar phallphallprocedure vplots (plate, mjd, fiber, z, wavezero) # vplots is multiple vplot. See vplot for basic details. # # --"wavezero" is a return-separated string of transitions you wish to overplot. # e.g. for CIV1549 on the bottom and MgII2798 on top, and autoscaling, use # wavezero="1549 0 0 \n 2798 0 0" # For plotfile="default" this creates # sp0374_51791_136_v1.47548_1549_2798.igi (for example). # If you don't want to autoscale, replace "0 0" with "ymin ymax", e.g. # wavezero="1549 0 100\n2798 50 150" # # 010228: created from vplot # # TODO: # **currently works only for errplot- frameplot=velocity (I think) # **redo to correctly plot zero level (whenever applicable) in all cases # **add marker lines for atmospheric abs # **convert to sm (or just write sm script instead of igi?) string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of observation"} string fiber {prompt="Fiber number (leading zeros optional)"} real z {prompt="Redshift"} string wavezero {prompt="Rest wavelength(s) of zero velocity"} string specfile="default" {prompt="Observed spectrum text file to use or save"} string plotfile="default" {prompt="igi commands file to save (will overwrite)"} string absplot="most" {enum="all|most|strong|none|feii",prompt="Plot absorption lines (all|most|strong|none|feii)?"} string emplot="most" {enum="all|most|strong|none",prompt="Plot emission lines (all|most|strong|none)?"} bool lowerlim=no {prompt="Plot from min. flux in spectrum instead of 0?"} bool errplot=no {prompt="Overplot 1-sigma error spectrum?"} real startplot=-25000. {prompt="Start wavelength for plot"} real endplot=5000. {prompt="End wavelength for plot"} string frameplot="velocity" {enum="velocity|observed|rest",prompt="Frame of start/end wavelengths"} bool schlegel=yes {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} struct *list struct *list2 begin string igicommands, plata, fecha, fibra, temp0, temp1, temp2, temp3, marco, path string nombre, otronombre, nuevonombre, camino, absorcion, emision, elemento string code, cero, zs, ws, expedientes, secretos string phistdir # pathname of PHIST source code directory real zed, xmin, xmax, ymin, ymax, junk, obsmin, obsmax, principio, conclusion real numero, ondacero, vmin, vmax, ceroonda, yalto, ybajo, ystep, yoffset real yoffold, yminold bool miny, errores, princeton, eco, go plata = plate fecha = mjd fibra = fiber zed = z zs = str(zed) if (substr(zs,strlen(zs),strlen(zs))==".") zs=substr(zs,1,strlen(zs)-1) expedientes = mktemp("temp0") print (wavezero, >> expedientes) nuevonombre = specfile otronombre = plotfile absorcion = absplot emision = emplot errores = errplot miny = lowerlim principio = startplot conclusion = endplot marco = frameplot cero="0" princeton = schlegel if (!princeton) { camino = spectro1d if ((strlen(plata)!=3)) { cero = "" } } else { camino = idlspec2d cero = "" if ((strlen(plata)==3)) { plata = "0"//plata } } temp1 = mktemp("temp1") temp2 = mktemp("temp2") temp3 = mktemp("temp3") nombre=temp1 if(nuevonombre=="default" || nuevonombre=="Default" || nuevonombre=="DEFAULT"){ nuevonombre="sp"//cero//plata//"_"//fecha//"_"//fibra//".obs" } if(nuevonombre==""){ nuevonombre=temp2 print ("Converting to linear wavelength scale...") } else { if (access(nuevonombre)) { print ("Using existing spectrum text file "//nuevonombre) } else { del(nuevonombre, ver-, >& "dev$null") print ("Creating linear wavelength scale spectrum text file "//nuevonombre) } } #--idlspec2d format if (princeton) { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { path=camino//plata//"/" # --check if spectrum fits file has WCSDIM keyword imgets(path//"spPlate-"//plata//"-"//fecha//".fits[0]", "wcsdim", >& "dev$null") # --if spectrum fits file has WCSDIM keyword, make local copy if (imgets.value!="0") { # --if not already present if (!imaccess("spPlate-"//plata//"-"//fecha)) { cp (path//"spPlate-"//plata//"-"//fecha//".fits", ".") } hedit("spPlate-"//plata//"-"//fecha//".fits[0]", "WCSDIM", del+, add-, ver-, show-, update+) path="" } # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spPlate-"//plata//"-"//fecha//"[0][*,"//fibra//"]", wcs="world", >> nombre) # --list out 1/sigma^2 in log10(lambda) listpix (path//"spPlate-"//plata//"-"//fecha//"[1][*,"//fibra//"]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame, and to sigma from 1/sigma^2 filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;(1./sqrt($2@2))", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } #--spectro1d format } else { if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { path=camino//plata//"/" # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,1]", wcs="world", >> nombre) # --list out sigma in log10(lambda) listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,3]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } } # --run through each transition to set up list = expedientes secretos = mktemp("temp4") ws = "" ybajo = 0 yalto = 0 ystep = 0 while (fscan(list,ondacero,ymin,ymax)!=EOF) { ceroonda = ondacero*(1.+zed) ws = ws//"_"//str(ondacero) if (substr(ws,strlen(ws),strlen(ws))==".") ws=substr(ws,1,strlen(ws)-1) # --find x plot limits if (marco=="velocity") { vmin=principio vmax=conclusion xmin=(1+(vmin/299792.458))/sqrt(1-(vmin/299792.458)**2.)*ondacero xmax=(1+(vmax/299792.458))/sqrt(1-(vmax/299792.458)**2.)*ondacero obsmin=(1+zed)*xmin obsmax=(1+zed)*xmax } else { if (marco=="rest") { xmin=principio xmax=conclusion obsmin=(1+zed)*xmin obsmax=(1+zed)*xmax vmin=299792.458*(1-(ondacero/principio)**2.)/(1+(ondacero/principio)**2.) vmax=299792.458*(1-(ondacero/conclusion)**2.)/(1+(ondacero/conclusion)**2.) } else { obsmin=principio obsmax=conclusion xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) vmin=299792.458*(1-(ondacero/xmin)**2.)/(1+(ondacero/xmin)**2.) vmax=299792.458*(1-(ondacero/xmax)**2.)/(1+(ondacero/xmax)**2.) } } # --find y plot limits if (miny) { sort(nuevonombre,col=2,num+,rev-) | head(junk,nlines=1) |scan(junk,ymin) } if (yalto==0) { ybajo=ymin yalto=ymin } if (ymax==0) { sort(nuevonombre,col=2,num+,rev+) | head(junk,nlines=1) | scan(junk,ymax) } print (ondacero//" "//ystep//" "//ymin//" "//ymax//" "//xmin//" "//xmax//" "//obsmin//" "//obsmax, >> secretos) ystep = (ymax-ymin) yalto = yalto + ystep } # --create igi commands file, running through each transition if(otronombre=="default" || otronombre=="Default" || otronombre=="DEFAULT"){ if (frameplot=="velocity") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//ws//".igi" } else if (frameplot=="rest") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//"_r"//int(principio)//"_"//int(conclusion)//".igi" } else if (frameplot=="observed") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//"_o"//int(principio)//"_"//int(conclusion)//".igi" } } igicommands = otronombre if(otronombre==""){ igicommands=temp3 print ("Creating igi commands file...") } else { del(otronombre, ver-, >& "dev$null") print ("Creating igi commands file "//otronombre//" ; rerun by typing:") print ("igi (initcmd=\"input "//otronombre//" ; end\", >\"dev$null\")") } print ("#igi script for spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" "//ws, >igicommands) print ("limits ",vmin,vmax,ybajo,yalto, >>igicommands) print ("axis ",vmin,vmax,0.,0.,0.1,0.95,0.85,1,1, >>igicommands) #top print ("axis ",vmin,vmax,0.,0.,0.1,0.10,0.85,1,0, >>igicommands) #bottom print ("angle 90", >> igicommands) print ("axis ",ybajo,yalto,0.,0.,0.10,0.1,0.85,2,1, >> igicommands) #left print ("axis ",ybajo,yalto,0.,0.,0.95,0.1,0.85,0,0, >> igicommands) #right print ("angle 0", >> igicommands) print ("xlabel spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" -- "//ws, >>igicommands) type (secretos) yoffset=0 list2 = secretos while (fscan(list2,ondacero,ystep,ymin,ymax,xmin,xmax,obsmin,obsmax)!=EOF) { ceroonda = ondacero*(1.+zed) yoffset = yoffset+ystep print ("#", >>igicommands) print ("data "//nuevonombre//"; xcol 1; ycol 2", >>igicommands) print ("xeval 299792.458*(1-("//ceroonda//"/x)**2.)/(1+("//ceroonda//"/x)**2.)", >>igicommands) print ("yeval y+"//ybajo+yoffset-ymin, >>igicommands) print ("ltype 0; connect", >>igicommands) if (errores) print ("data "//nuevonombre//"; xcol 1; ycol 3", >>igicommands) if (errores) print ("connect", >>igicommands) print ("ltype 0; move "//vmin//" "//(ybajo+yoffset+ymax-ymin)//"; draw "//vmax//" "//(ybajo+yoffset+ymax-ymin), >>igicommands) phistdir = osfn("phist$") print ("#--absorption lines", >> igicommands) print ("ltype 2", >>igicommands) if (absorcion=="feii") { list=phistdir//"ll_feiiabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="all") { list=phistdir//"ll_allabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="most") { list=phistdir//"ll_mostabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="strong") { list=phistdir//"ll_strabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } print ("#--emission lines", >> igicommands) print ("ltype 1", >>igicommands) if (emision=="all") { list=phistdir//"ll_allem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="most") { list=phistdir//"ll_mostem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="strong") { list=phistdir//"ll_strem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } } igi (initcmd="input "//igicommands//" ; end", >"dev$null") del (expedientes, ver-, >& "dev$null") del (temp1, ver-, >& "dev$null") del (temp2, ver-, >& "dev$null") del (temp3, ver-, >& "dev$null") del (secretos, ver-, >& "dev$null") end ./vplot.cl0100644000151400015140000002675207403704476011705 0ustar phallphallprocedure vplot (plate, mjd, fiber, z, wavezero) # This procedure plots an object spectrum and overplots vertical lines # at the positions of spectral features for the given redshift: # dotted lines for emission and dashed lines for absorption. # The line lists used, including IDs, are listed in the help page for lplots. # # REQUIRES: # --stsdas package loaded (for IGI) # --the following in your login.cl or loginuser.cl : # task $cp = "$foreign" # # NOTES: # --specfile="default" creates, for plate 357, mjd 51813, fiber 509, z=2.118 : # sp0357_51813_509.obs # --plotfile="default" creates, for plate 357, mjd 51813, fiber 509, z=2.118 : # sp0357_51813_509_v2.118.igi # and for the above plus "frame=rest start=2530 end=2650" it creates : # sp0357_51813_509_v2.118_r2530_2650.igi # and for the above plus "frame=observed start=7700 end=9205" it creates : # sp0357_51813_509_v2.118_o7700_9205.igi # # 001205: added spectro1d support # 010226: converted to velocity space # # TODO: # **add marker lines for atmospheric abs # **convert to sm (or just write sm script instead of igi?) string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of observation"} string fiber {prompt="Fiber number (leading zeros optional)"} real z {prompt="Redshift"} real wavezero {prompt="Rest wavelength of zero velocity"} string specfile="default" {prompt="Observed spectrum text file to use or save"} string plotfile="default" {prompt="igi commands file to save (will overwrite)"} string absplot="strong" {enum="all|most|strong|none|feii",prompt="Plot absorption lines (all|most|strong|none|feii)?"} string emplot="strong" {enum="all|most|strong|none|sdss",prompt="Plot emission lines (all|most|strong|none)?"} bool errplot=no {prompt="Overplot 1-sigma error spectrum?"} bool lowerlim=no {prompt="Plot from min. flux in spectrum instead of 0?"} real startplot=-25000. {prompt="Start wavelength for plot"} real endplot=5000. {prompt="End wavelength for plot"} string frameplot="velocity" {enum="velocity|observed|rest",prompt="Frame of start/end wavelengths"} bool schlegel=yes {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} struct *list begin string igicommands, plata, fecha, fibra, temp0, temp1, temp2, temp3, marco, path string nombre, otronombre, nuevonombre, camino, absorcion, emision, elemento string code, cero, zs, ws string phistdir # pathname of PHIST source code directory real zed, xmin, xmax, ymin, ymax, junk, obsmin, obsmax, principio, conclusion real numero, ondacero, vmin, vmax, ceroonda bool miny, errores, princeton, eco, go plata = plate fecha = mjd fibra = fiber zed = z zs = str(zed) if (substr(zs,strlen(zs),strlen(zs))==".") zs=substr(zs,1,strlen(zs)-1) ondacero = wavezero ceroonda = ondacero*(1.+zed) ws = str(ondacero) if (substr(ws,strlen(ws),strlen(ws))==".") ws=substr(ws,1,strlen(ws)-1) nuevonombre = specfile otronombre = plotfile absorcion = absplot emision = emplot errores = errplot miny = lowerlim principio = startplot conclusion = endplot marco = frameplot princeton = schlegel cero="0" if (!princeton) { camino = spectro1d if ((strlen(plata)!=3)) { cero = "" } } else { camino = idlspec2d cero = "" if ((strlen(plata)==3)) { plata = "0"//plata } } temp1 = mktemp("temp1") temp2 = mktemp("temp2") temp3 = mktemp("temp3") nombre=temp1 if(nuevonombre=="default" || nuevonombre=="Default" || nuevonombre=="DEFAULT"){ nuevonombre="sp"//cero//plata//"_"//fecha//"_"//fibra//".obs" } if(nuevonombre==""){ nuevonombre=temp2 print ("Converting to linear wavelength scale...") } else { if (access(nuevonombre)) { print ("Using existing spectrum text file "//nuevonombre) } else { del(nuevonombre, ver-, >& "dev$null") print ("Creating linear wavelength scale spectrum text file "//nuevonombre) } } #--idlspec2d format if (princeton) { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { path=camino//plata//"/" # --check if spectrum fits file has WCSDIM keyword imgets(path//"spPlate-"//plata//"-"//fecha//".fits[0]", "wcsdim", >& "dev$null") # --if spectrum fits file has WCSDIM keyword, make local copy if (imgets.value!="0") { # --if not already present if (!imaccess("spPlate-"//plata//"-"//fecha)) { cp (path//"spPlate-"//plata//"-"//fecha//".fits", ".") } hedit("spPlate-"//plata//"-"//fecha//".fits[0]", "WCSDIM", del+, add-, ver-, show-, update+) path="" } # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spPlate-"//plata//"-"//fecha//"[0][*,"//fibra//"]", wcs="world", >> nombre) # --list out 1/sigma^2 in log10(lambda) listpix (path//"spPlate-"//plata//"-"//fecha//"[1][*,"//fibra//"]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame, and to sigma from 1/sigma^2 filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;(1./sqrt($2@2))", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } #--spectro1d format } else { if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { path=camino//plata//"/" # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,1]", wcs="world", >> nombre) # --list out sigma in log10(lambda) listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,3]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } } # --find plot limits if (marco=="velocity") { vmin=principio vmax=conclusion xmin=(1+(vmin/299792.458))/sqrt(1-(vmin/299792.458)**2.)*ondacero xmax=(1+(vmax/299792.458))/sqrt(1-(vmax/299792.458)**2.)*ondacero } else { if (marco=="rest") { xmin=principio xmax=conclusion obsmin=(1+zed)*xmin obsmax=(1+zed)*xmax vmin=299792.458*(1-(ondacero/principio)**2.)/(1+(ondacero/principio)**2.) vmax=299792.458*(1-(ondacero/conclusion)**2.)/(1+(ondacero/conclusion)**2.) } else { obsmin=principio obsmax=conclusion xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) vmin=299792.458*(1-(ondacero/xmin)**2.)/(1+(ondacero/xmin)**2.) vmax=299792.458*(1-(ondacero/xmax)**2.)/(1+(ondacero/xmax)**2.) } } sort(nuevonombre, col=2, num+, rev+) | head (junk, nlines=1) | scan (junk, ymax) ymin=0. if (miny) { sort(nuevonombre,col=2,num+,rev-) | head(junk,nlines=1) |scan(junk,ymin) } # --create igi commands file if(otronombre=="default" || otronombre=="Default" || otronombre=="DEFAULT"){ if (frameplot=="velocity") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//"_"//ws//".igi" } else if (frameplot=="rest") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//"_r"//int(principio)//"_"//int(conclusion)//".igi" } else if (frameplot=="observed") { otronombre="sp"//plata//"_"//fecha//"_"//fibra//"_v"//zs//"_o"//int(principio)//"_"//int(conclusion)//".igi" } } igicommands = otronombre if(otronombre==""){ igicommands=temp3 print ("Creating igi commands file...") } else { del(otronombre, ver-, >& "dev$null") print ("Creating igi commands file "//otronombre//" ; rerun by typing:") print ("igi (initcmd=\"input "//otronombre//" ; end\", >\"dev$null\")") } print ("#igi display script for spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" ; to rerun, type", >igicommands) print ("#igi (initcmd=\"input "//otronombre//" ; end\", >\"dev$null\")", >>igicommands) print ("limits ",vmin,vmax,ymin,ymax, >>igicommands) print ("data "//nuevonombre//"; xcol 1; ycol 2", >>igicommands) print ("xeval 299792.458*(1-("//ceroonda//"/x)**2.)/(1+("//ceroonda//"/x)**2.)", >>igicommands) print ("connect", >>igicommands) if (errores) print ("data "//nuevonombre//"; xcol 1; ycol 3", >>igicommands) if (errores) print ("connect", >>igicommands) print ("axis ",vmin,vmax,0.,0.,0.1,0.95,0.85,0,1, >>igicommands) #top print ("axis ",vmin,vmax,0.,0.,0.1,0.10,0.85,1,0, >>igicommands) #bottom print ("angle 90", >> igicommands) print ("axis ",ymin,ymax,0.,0.,0.10,0.1,0.85,2,1, >> igicommands) #left print ("axis ",ymin,ymax,0.,0.,0.95,0.1,0.85,0,0, >> igicommands) #right print ("angle 0", >> igicommands) print ("xlabel spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" -- Zero Velocity = "//ondacero//" \gV", >>igicommands) phistdir = osfn("phist$") print ("#--absorption lines", >> igicommands) print ("ltype 2", >>igicommands) if (absorcion=="feii") { list=phistdir//"ll_feiiabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="all") { list=phistdir//"ll_allabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="most") { list=phistdir//"ll_mostabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="strong") { list=phistdir//"ll_strabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } print ("#--emission lines", >> igicommands) print ("ltype 1", >>igicommands) if (emision=="all") { list=phistdir//"ll_allem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="most") { list=phistdir//"ll_mostem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="strong") { list=phistdir//"ll_strem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } igi (initcmd="input "//igicommands//" ; end", >"dev$null") del (temp1, ver-, >& "dev$null") del (temp2, ver-, >& "dev$null") del (temp3, ver-, >& "dev$null") end ./doigi.cl0100644000151400015140000000030507246576022011615 0ustar phallphallprocedure doigi(igifile) string igifile {prompt="Existing file of igi commands"} begin string file_igi file_igi=igifile igi (initcmd="input "//file_igi//" ; end", >"dev$null") end ./dec2seg.cl0100644000151400015140000000415707404162361012040 0ustar phallphallprocedure dec2seg(ra,dec) # dec2seg.cl -- convert decimal coords to sexigesimal # # 010305: created by PBH # # Note: format=yes WILL NOT WORK CORRECTLY for declination <= -10 degrees # Note: program will FAIL if any input declination includes a plus sign real ra {prompt="Right Ascension in decimal degrees"} real dec {prompt="Declination in decimal degrees (NO PLUS SIGN)"} string coords="" {prompt="File of coordinates to convert"} int numra=2 {prompt="Number of output decimal places in RA"} int numdec=1 {prompt="Number of output decimal places in Dec"} bool format=yes {prompt="Format output all nice and neat?"} struct *list begin real ascencion, declinacion string expediente, tempfile int ranum, decnum, ralen, declen bool spiffy expediente = coords ranum = numra ralen=8+1+ranum ; if (ranum==0){ralen=8} decnum = numdec declen=8+1+decnum ; if (decnum==0){declen=8} spiffy = format if (expediente=="") { ascencion = ra declinacion = dec if(spiffy){ del ("_???_lola_???_", ver-, >& "dev$null") tempfile="_run_lola_run_" printf ("%."//numra//"h %."//numdec//"h\n", ascencion/15., declinacion, >> tempfile) print ("{printf \"%0"//ralen//"s %0"//declen//"s\\n\", $1, $2}", >> "_awk_lola_awk_") !touch _ran_lola_ran_ !awk -f _awk_lola_awk_ _run_lola_run_ | sed -e 's/\ / +/' | sed -e 's/\ +-/ -0/' >> _ran_lola_ran_ type ("_ran_lola_ran_") del ("_???_lola_???_", ver-, >& "dev$null") } else { printf ("%."//numra//"h %."//numdec//"h\n", ascencion/15., declinacion) } } else { list=expediente del ("_???_lola_???_", ver-, >& "dev$null") tempfile="_run_lola_run_" while (fscan(list,ascencion,declinacion)!=EOF) { if(spiffy){ printf ("%."//numra//"h %."//numdec//"h\n", ascencion/15., declinacion, >> tempfile) } else { printf ("%."//numra//"h %."//numdec//"h\n", ascencion/15., declinacion) } } if(spiffy){ print ("{printf \"%0"//ralen//"s %0"//declen//"s\\n\", $1, $2}", >> "_awk_lola_awk_") !touch _ran_lola_ran_ !awk -f _awk_lola_awk_ _run_lola_run_ | sed -e 's/\ / +/' | sed -e 's/\ +-/ -0/' >> _ran_lola_ran_ type ("_ran_lola_ran_") del ("_???_lola_???_", ver-, >& "dev$null") } } end ./lplots2.cl0100644000151400015140000003365207403702520012121 0ustar phallphallprocedure lplots2 (plate, mjd, fiber, z) # This is an offshoot of lplots.cl which splits the spectrum into two panels. string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of observation"} string fiber {prompt="Fiber number (leading zeros optional)"} real z {prompt="Redshift"} string specfile="default" {prompt="Observed spectrum text file to use or save"} string plotfile="default" {prompt="igi commands file to save (will overwrite)"} string absplot="most" {enum="all|most|strong|none|feii|own",prompt="Plot absorption lines (all|most|strong|none|feii|own)?"} string emplot="most" {enum="all|most|strong|none|sdss|own",prompt="Plot emission lines (all|most|strong|none|sdss|own)?"} string ownelist="" {prompt="Own list of absorption lines"} string ownalist="" {prompt="Own list of emission lines"} bool nightsky=no {prompt="Plot wavelengths of strong night sky lines?"} bool telluric=no {prompt="Plot wavelengths of telluric absorption lines?"} bool fakeplot=no {prompt="Plot features that mimic emission lines?"} bool errplot=no {prompt="Overplot 1-sigma error spectrum?"} bool addlabel=no {prompt="Add line ID labels to plot?"} bool lowerlim=no {prompt="Plot from min. flux in spectrum instead of 0?"} real top=0. {prompt="Max flux value, top half (if !=0) in 10^-17 units"} real startplot=0. {prompt="Start wavelength for plot"} real splitwave=0. {prompt="Split wavelength for plot (if 0, split in half)"} real endplot=0. {prompt="End wavelength for plot"} real mid=0. {prompt="Max flux value, bottom half (if !=0 && top!=0)"} string frameplot="neither" {enum="neither|observed|rest",prompt="Frame of start/end wavelengths"} bool schlegel=yes {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} struct *list begin string igicommands, plata, fecha, fibra, temp0, temp1, temp2, temp3, marco, path string nombre, otronombre, nuevonombre, camino, absorcion, emision, elemento string code, cero, zs, emfile, absfile string phistdir # pathname of PHIST source code directory real zed, xmin, xmax, ymin, ymax, junk, obsmin, obsmax, principio, conclusion real numero, xmax1, xmax2, xmin1, xmin2, obsmin1, obsmax1, obsmin2, obsmax2 real wavesplit, ymid int posicion, cycle bool miny, errores, falsificacion, princeton, eco, go, libel, nochecielo bool seesaw, telurico plata = plate fecha = mjd fibra = fiber zed = z zs = str(zed) if (substr(zs,strlen(zs),strlen(zs))==".") zs=substr(zs,1,strlen(zs)-1) nuevonombre = specfile otronombre = plotfile absorcion = absplot emision = emplot emfile = ownelist absfile = ownalist nochecielo = nightsky telurico = telluric falsificacion = fakeplot errores = errplot libel = addlabel miny = lowerlim ymax = top principio = startplot wavesplit = splitwave conclusion = endplot ymid = mid marco = frameplot princeton = schlegel cero="0" if (!princeton) { camino = spectro1d if ((strlen(plata)!=3)) { cero = "" } } else { camino = idlspec2d cero = "" if ((strlen(plata)==3)) { plata = "0"//plata } } temp1 = mktemp("temp1") temp2 = mktemp("temp2") temp3 = mktemp("temp3") nombre=temp1 if(nuevonombre=="default" || nuevonombre=="Default" || nuevonombre=="DEFAULT"){ nuevonombre="sp"//cero//plata//"_"//fecha//"_"//fibra//".obs" } if(nuevonombre==""){ nuevonombre=temp2 print ("Converting to linear wavelength scale...") } else { if (access(nuevonombre)) { print ("Using existing spectrum text file "//nuevonombre) } else { del(nuevonombre, ver-, >& "dev$null") print ("Creating linear wavelength scale spectrum text file "//nuevonombre) } } #--idlspec2d format if (princeton) { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { if (camino==".") { path="" } else { path=camino//plata//"/" } # --check if spectrum fits file has WCSDIM keyword imgets(path//"spPlate-"//plata//"-"//fecha//".fits[0]", "wcsdim", >& "dev$null") # --if spectrum fits file has WCSDIM keyword, make local copy if (imgets.value!="0") { # --if not already present if (!imaccess("spPlate-"//plata//"-"//fecha)) { cp (path//"spPlate-"//plata//"-"//fecha//".fits", ".") } hedit("spPlate-"//plata//"-"//fecha//".fits[0]", "WCSDIM", del+, add-, ver-, show-, update+) path="" } # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spPlate-"//plata//"-"//fecha//"[0][*,"//fibra//"]", wcs="world", >> nombre) # --list out 1/sigma^2 in log10(lambda) listpix (path//"spPlate-"//plata//"-"//fecha//"[1][*,"//fibra//"]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame, and to sigma from 1/sigma^2 filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;(1./sqrt($2@2))", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } #--spectro1d format } else { if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { if (camino==".") { path="" } else { path=camino//plata//"/" } # --list out in log10(lambda) if (!access(nombre)) { listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,1]", wcs="world", >> nombre) # --list out sigma in log10(lambda) listpix (path//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0][*,3]", wcs="world", >> nombre//"_errs") } # --convert to linear lambda in observed frame filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") } } # --find plot limits if (marco=="neither") { print ("Finding plot limits in observed and rest frame...") head (nuevonombre, nlines=1) | scan (obsmin, junk) tail (nuevonombre, nlines=1) | scan (obsmax, junk) xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) } else { if (marco=="rest") { xmin=principio xmax=conclusion obsmin=(1+zed)*xmin obsmax=(1+zed)*xmax if(wavesplit!=0){ xmax1=splitwave obsmax1=(1+zed)*xmax1 } } else { obsmin=principio obsmax=conclusion xmin=obsmin/(1+zed) xmax=obsmax/(1+zed) if(wavesplit!=0){ obsmax1=splitwave xmax1=obsmax1/(1+zed) } } } if(ymax==0){ sort(nuevonombre, col=2, num+, rev+) | head (junk, nlines=1) | scan (junk, ymax) ymid=ymax } ymin=0. if (miny) { sort(nuevonombre,col=2,num+,rev-) | head(junk,nlines=1) |scan(junk,ymin) } # --create igi commands file part 1 if(otronombre=="default" || otronombre=="Default" || otronombre=="DEFAULT"){ if (frameplot=="neither") { otronombre="sp2_"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//".igi" } else if (frameplot=="rest") { otronombre="sp2_"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//"_r"//int(principio)//"_"//int(conclusion)//".igi" } else if (frameplot=="observed") { otronombre="sp2_"//cero//plata//"_"//fecha//"_"//fibra//"_z"//zs//"_o"//int(principio)//"_"//int(conclusion)//".igi" } } igicommands = otronombre if(otronombre==""){ igicommands=temp3 print ("Creating igi commands file...") } else { del(otronombre, ver-, >& "dev$null") print ("Creating igi commands file "//otronombre//" ; rerun by typing:") print ("igi (initcmd=\"input "//otronombre//" ; end\", >\"dev$null\")" } cycle=1 xmin1=xmin if(wavesplit==0){xmax1=xmax-(xmax-xmin)/2.} xmin2=xmax1 xmax2=xmax obsmin1=obsmin if(wavesplit==0){obsmax1=obsmax-(obsmax-obsmin)/2.} obsmin2=obsmax1 obsmax2=obsmax for (cycle=1; cycle<=2; cycle+=1){ if(cycle==1){ print ("#igi display script for spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="//zed, >igicommands) xmin=xmin1; xmax=xmax1; obsmin=obsmin1; obsmax=obsmax1 print ("#", >>igicommands) print ("location 0.03 0.99 0.1 0.95", >>igicommands) print ("#", >>igicommands) print ("window 1 2 2; ltype 0; expand 0.60", >>igicommands) print ("limits ",obsmin,obsmax,ymin,ymax, >>igicommands) print ("angle 90", >> igicommands) print ("axis ",ymin,ymax,0.,0.,0.03,0.1,0.85,2,1, >> igicommands) #left print ("axis ",ymin,ymax,0.,0.,0.99,0.1,0.85,0,0, >> igicommands) #right } if(cycle==2){ xmin=xmin2; xmax=xmax2; obsmin=obsmin2; obsmax=obsmax2 print ("#", >>igicommands) print ("window 1 2 1; ltype 0; expand 0.60", >>igicommands) print ("limits ",obsmin,obsmax,ymin,ymid, >>igicommands) print ("angle 90", >> igicommands) print ("axis ",ymin,ymid,0.,0.,0.03,0.1,0.85,2,1, >> igicommands) #left print ("axis ",ymin,ymid,0.,0.,0.99,0.1,0.85,0,0, >> igicommands) #right } print ("angle 0", >> igicommands) print ("data "//nuevonombre//"; xcol 1; ycol 2", >>igicommands) print ("connect", >>igicommands) if (errores) print ("data "//nuevonombre//"; xcol 1; ycol 3", >>igicommands) if (errores) print ("connect", >>igicommands) print ("axis ",xmin,xmax,0.,0.,0.03,0.95,0.96,0,0, >>igicommands) #top print ("axis ",xmin,xmax,0.,0.,0.03,0.95,0.96,1,1, >>igicommands) #top print ("axis ",obsmin,obsmax,0.,0.,0.03,0.10,0.96,1,0, >>igicommands) #bottom #print ("xlabel spPlate-"//plata//"-"//fecha//"[*,"//fibra//"] z="/zed//" -- Bottom: Observed -- Top: Rest", >>igicommands) if (nochecielo) { print ("#--night sky lines", >> igicommands) print ("ltype 0", >>igicommands) if (obsmin<5077 && obsmax>5077) { print ("move 5577 0; draw 5577 "//ymax, >>igicommands) } if (obsmin<5892 && obsmax>5892) { print ("move 5892 0; draw 5892 "//ymax, >>igicommands) } if (obsmin<6300 && obsmax>6300) { print ("move 6300 0; draw 6300 "//ymax, >>igicommands) } } if (telurico) { print ("#--telluric absorption lines", >> igicommands) print ("ltype 4", >>igicommands) print ("move 6290 0; draw 6290 "//ymax, >>igicommands) print ("move 6500 0; draw 6500 "//ymax, >>igicommands) print ("move 6900 0; draw 6900 "//ymax, >>igicommands) print ("move 7200 0; draw 7200 "//ymax, >>igicommands) print ("move 7600 0; draw 7600 "//ymax, >>igicommands) print ("move 8200 0; draw 8200 "//ymax, >>igicommands) print ("move 9000 0; draw 9000 "//ymax, >>igicommands) print ("move 9150 0; draw 9150 "//ymax, >>igicommands) print ("move 9350 0; draw 9350 "//ymax, >>igicommands) print ("move 9750 0; draw 9750 "//ymax, >>igicommands) } if (falsificacion) { print ("#--mock emission lines", >> igicommands) print ("ltype 4", >>igicommands) print ("move 4025 0; draw 4025 "//ymax, >>igicommands) print ("move 4505 0; draw 4505 "//ymax, >>igicommands) print ("move 4555 0; draw 4555 "//ymax, >>igicommands) print ("move 4625 0; draw 4625 "//ymax, >>igicommands) print ("move 5051 0; draw 5051 "//ymax, >>igicommands) } print ("#--switch to rest frame plotting", >> igicommands) print ("limits ",xmin,xmax,ymin,ymax, >>igicommands) phistdir = osfn("phist$") print ("#--absorption lines", >> igicommands) print ("ltype 2; justify 3", >>igicommands) if (absorcion=="own") { list=absfile while (fscan(list,numero,elemento)!=EOF) { posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>xmin && numero>igicommands) } } else { if (numero>xmin && numero>igicommands) } } } } if (absorcion=="all") { list=phistdir//"ll_allabs" while (fscan(list,numero,elemento)!=EOF) { posicion=stridx(",",elemento)-1 elemento=substr(elemento,1,posicion) if (libel) { if (numero>xmin && numero>igicommands) } } else { if (numero>xmin && numero>igicommands) } } } } if (absorcion=="most") { list=phistdir//"ll_mostabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="strong") { list=phistdir//"ll_strabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (absorcion=="feii") { list=phistdir//"ll_feiiabs" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } print ("#--emission lines", >> igicommands) print ("ltype 1", >>igicommands) if (emision=="own") { list=emfile while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="all") { list=phistdir//"ll_allem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="most") { list=phistdir//"ll_mostem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="strong") { list=phistdir//"ll_strem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } if (emision=="sdss") { list=phistdir//"ll_sdssem" while (fscan(list,numero,elemento)!=EOF) { if (numero>xmin && numero>igicommands) } } } } igi (initcmd="input "//igicommands//" ; end", >"dev$null") del (temp1, ver-, >& "dev$null") del (temp2, ver-, >& "dev$null") del (temp3, ver-, >& "dev$null") end ./sdss_qso_nolines.fits0100644000151400015140000010340007316231541014446 0ustar phallphallSIMPLE = T / Fits standard BITPIX = -32 / Bits per pixel NAXIS = 1 / Number of axes NAXIS1 = 7755 / Axis length ORIGIN = 'NOAO-IRAF FITS Image Kernel July 1999' / FITS file originator OBJECT = 'SDSS composite' / Name of the object observed EXTEND = F / File may contain extensions DATE = '2001-06-27T00:15:37' / Date FITS file was generated IRAF-TLM= '10:57:00 (26/06/2001)' / Time of last modification DC-FLAG = 0 CRPIX1 = 1. CRVAL1 = 800.5 CDELT1 = 1. WCSDIM = 2 CTYPE1 = 'LINEAR ' CTYPE2 = 'LINEAR ' CDELT2 = 1. CD1_1 = 1. CD2_2 = 1. LTM1_1 = 1. LTM2_2 = 1. WAT0_001= 'system=image' WAT1_001= 'wtype=linear' WAT2_001= 'wtype=linear' FIXPIX = 'Jun 26 10:56 Bad pixel file is sdss_qso_twomask.fits' WAXMAP01= '1 0 0 0 ' GRADSCAL= 1. END >u?-V>t>V>e`B=#??@>I^>?|??BM? 7L> ??L1?H1'>I^>ě>{m?co?;> ?hs?&?=>V>?P>?+ƨ=9X?K>ƨ>?E`B> ? ?@A??hs?dZ>T?>?9X?P>Q>u?7 =>~?K?ZH??xb?mV?2!?>R??K??#?? ~?G??|j??t??^?'?H1'??j??dZ?F?R?^5?b??}?S?9X?@ -@"@ Z?ƨ?t?S?-?r@4Z@S@?{@V@'+@ 1?A@ G@ =q@)x@1#@@bN@g =@4@,@U@}?}@e`B@@@c"@s"@~E@r@V@a^@@~@Q&@mp@}h@D/@v{@`1'@U@@@7L@~@@K@#@%@@z=q@m@7@|I@o@@M@x @y@`@R J@X@h@hs@#@|D@XbN@z@j@"@!@j@D@uO@@@v@@@A@D@@u@S@x@+@ @j@+@z@@!@@P@r@&@F@@;@@@ @@I@w@}O@-@w@@hs@@7@ @@S@?}@m@^5@D@=q@@@@=q@;d@ =@@=q@`@V@|@S@AA@@ڟ@띲@CAX@/Av@@Z@@bN@^@C@(@@ J@"@;@ =@v@@‡+@!@X@9X@+@@hs@9@n@t@9@@\@&@K@`B@E@@?}@H@@;d@p@@`B@-@!@v@j@@@\@b@@H@@`B@p@@@S@dZ@ƨ@7L@Z@ƨ@~@b@@p@@@+@7@ @@@@@^@^5@I@o@@7@V@D@RV@p@+@&@Q@D@@ƨ@@t@@O@ff@t@A@r@~@9@@n@ @F@1'@ff@7@\@Ĝ@@V@@@@#@@ȴ@w@E@@1'@T@@@`B@\@@S@ƨ@b@ =@1'@I@ @ J@;@`B@(@V@Ǖ@T@P@b@9@O@@j@@@Ĭ@@@@@ړ@a@.#@4@F@ٕX@bj@/|@@ɠ@ؖ@c@0@@@ט @e@2/@A@S@֙e@fw@3@@ͬ@՚@g@4@@@Ԝ@i)@6;@M@_@ӝq@j@7@@ѹ@Ҟ@k@8@@@Ѡ$@m6@:H@Z@k@С}@n@;@@@Ϣ@o@<@ @@Τ0@qB@>T@ f@x@ͥ@r@?@ @@̦@s@A@@+@˨=@uO@B`@r@܄@ʩ@v@C@@@ɪ@x@E@%@7@ȬI@y[@Fm@@@ǭ@z@G@@@Ʈ@|@I @2@D@ŰU@}g@Jy@@@ı@~@K@@@ó@À@M,@>@P@´b@t@N@@@@@O@@ @V@|@bN@@@R@|@_;@A@#@%@s@@@\@q@S@6F@@@/@}@@@ff@H@+@;@Z@-@@@C@ff@A@?}@@@I@@s*@T@6 @{@@[@@<@~@`@A@"@m@@M@@.@k@M@.@@_@@@@@w @X@:@q@@R@@2@@d@E@&@c@@D@@$@o@Q@2u@@V@@6@@{@\@=@h@@H@ø@)@@h @Iy@*@ Z@@:@@@s@T@6l@@L@ڽ@-@@ @`~@A@#^@@?@ǯ@@@l@Mp@.@P@@1@@@w@X@:b@@C@޳@#@@@dt@E@'U@@5@˥@@@o@Qf@2@G@@'@@@{x@\@>Y@@9@@@@@hk@I@+K@ @,@Ϝ@ @|@s@U]@6@=@@@@@o@`@BO@#@0@@@@@la@M@/B@@"@Ӓ@@s@w@YS@:@4@@@@@e@d@FF@'@ &@@@w@@pX@Q@38@@@׉@@i@{@]J@>@ *@@ @{@@\@h@J<@+@ @@@n@@tN@U@7/@@@@@`@@a@@B@$!@@@r@@R@l@N3@/@@@@d@@xE@Y@;%@@@v@@V@@e7@F@(@ @@h@@I@p@R)@3@ @z@@[@@|;@]@?@ @@l@@M@@i-@J@,@ ~@@_@@?@t@V @7@@q@@Q@@2@a@C@$@@c@@C@@m$@N@0@u@@U@@6@x@Z@;@@g@@H@@(@e@G @(y@ @Y@@:@@q@R@3@k@@L@@,@|@^ @?}@`@@=q@dZ@|@@K@~@ =@@@$@@/@@@v@E@ƨ@@@V@@{@@K@=q@o@@w@R@S@ @ =@ @@H@\)@\)@@@$@@-@C@@7L@@@/@u@x@A@9@@V@ J@-@@R@dZ@;d@P@(@P@^5@~@@Ĝ@1'@@RS@@@h@&@@@ @@ @K@@@A@@@ @"@V@v@@@ J@K@@@E@E@K@@"@ @@M@^@7L@j@@\)@@@dZ@P@V@+@n@5?@y@33@@R@@n@@@@n@@@ =@M@V@ȴ@@{@@@`B@`@D@j@r@S@3~@@L@Գ@@@u@VO@6@@@@R@y @Y@9@U@@#@@@|X@\@=&@@@[@@)@@_@@^@ @,@%@@D@@~]@~+@~G@~@}ɕ@}c@}K1@} @|@|@|Ni@|7@{@{@{Q@{n@z<@z @zT@z@yt@yB@yX@y@x٬@xz@x[H@x@w@w@w^@wN@v@v@va@v"@uT@u"@ud@u%@t@tZ@th(@t(@s@s@sk`@s,.@r@r@rn@r/e@q3@q@qq@q2@pk@p9@pu@p5@o@oq@ox?@o9 @n@n@n{w@n>=>R=հ=˰>$@=󶰪@=@;m@:@:H@; @;ƨ@:@:@: J@9G@8@: J@:=q@:=q@9^@9X@9G@8@9@:M@:@9@: J@97@:n@:@;"@:-@;@:@:\@:n@:@:@;@:@;@=/@<@;@<9X@;@R>@>@=T@?@=T@>v@?\)@>@?@?;@?|@?;@AG@Ahs@A@@r@A7L@Ax@A@B@BM@BH@Dj@B~@B@CS@BH@CC@CF@CC@D/@D@D@DI@C"@C@C"@Dz@E`B@DD@E@E`B@E@EO@G@G\)@G@G|@H@G@I7@I@J J@IG@G@Fy@G|@Fy@FV@EO@D@D@C@B~@D@C33@C"@A@Bn@A^@A%@A&@@1'@?\)@@@?+@@1'@>ȴ>?;尪>>>+>+===-=?=í><@=@>$@=հ@>ff@>v@>5?@? =@@bN@A@@r@B@B^5@C@Ct@DI@Dj@DI@C@CF@CS@AG@@b@@Q@@Q@>@1'?@?;尪?+?@?;尪>ڴڰ===@@ R@@e@@y@@@@@n)@\@K=@9@(P@@d@@w@@@@@(@y@h<@V@EO@3@"c@@v@@܊@@@'@@:@s@bN@P@?b@-@u@ @@@֜@&@@9@@M@m@\`@J@9t@'@@@@%@Ю@8@@L@@y_@g@Vs@D@3@"@@#@@7@@J@@^@@sq@a@P@?@-@"@ @6@@I@@]@@p@~@m@\@J@9!@'@5@@H@@\@@o@@@y @g@V @D@33@!@G@@Z@@n@@@ @@s@a@P2@>@-F@@ Y@@m@@Ā@ @@@~@m1@[@JD@8@'X@@k@@@ @@@@0@x@gC@U@DW@2@!j@@~@@ۑ@@@/@@B@r@aV@O@>i@,@}@ @@@դ@-@@A@@~T@l@[h@I@8{@'@@@@,@϶@@@@S@@xg@f@Uz@D@2@!@@+@@>@@R@@@+@A@Q@Ĝ@&@ @@=q@@@x@H@@@n@"@@@ @@=q@@-@ @^5@\@C@ @H@@@=q@~@@@-@hs@@\@ @M@-@@@@hs@X@7L@&@9@X@@1'@;@@@@|@ @Q@ȴ@v@y@+@ p@ @@ O@ p@ j@ @ 9X@ Z@ t@ 33@ @ J@`@@ @u@@l@+@E@E@/@h@p@j@j@1@o@!@^5@7L@M@7L@u@Q@@??-?h?-?5???/??j?O?{?D?O??ƨ?m?O??~?/?O?h?D??ƨ?p??h??p??V?V?D?I?dZ??dZ?? ?dZ?I?^?m?I??I??dZ?O?I?H?ƨ?I??I??ƨ?~??C?dZ?ƨ??I?? ?=q??#?=q?^5???X??Q?1'?r??9??^?~??~? ?"??p? ?V?V???;@ ?;@b?@bN@&@@=q@hs@^@n@=q@^@hs@\@\@@@~@S@~@@@@Q@@Ĝ@r?????;d?|??|????@Q????V??;d?@b@??;@@9@@ @@@ @@@7@7@%@@&@X@7L@-@n@=q@@!@M@@C@dZ@1@ @=q@ J@~@=q@@@@@-@7@hs@ @r@Q@%?|?;@@A?5??j???5??/?-?"?"?j?D?V?1?D?ƨ?(??dZ?H?7L?^??x?7L?9??9???1'?+?y??ȴ?ff?ff??T??T??E?T??}?l?K?$?E?l?K??T?+??}?S??33?33??j?o?S?S??-?!?????o?\???Ĝ?`?%?|?bN???????-??|??5??C??H?ƨ??x?=q?x?u?=q??l?+?K?E?P?l?䛦?`B?/?`B?Z?j??F???p??h(?:? ?;?㱗??VO?(??c?⟾?r?Dv??.?Ị??`B?2??U?ੱ?| ?Ni? ?G?G?&?ߝ?bN? ?ߝ?ޱ?A?? ?߾w??;?|??bN??ޱ?|??A?hs?V??޸R???5??{? ???V??ޱ??/??N?ި?ތm?o?S?7??9??X?ݨ?݌v?p?S?7$??C??b?ܨ?܌?p?S?7.??M??l?ۨ?ی?p?S?78??W??v?ک?ڌ?p#?S?7B??a???٩?ٌ?p-?S?7L?(?X?#?x?ؓu???X??r?^5?Q?ٙ?7L?ش9? =?r?ؓu?X?=q?1'?x?ٙ?ٙ?Q??7L?X?׮?b?l?ff?y?և+?l?׍P?׍P?և+?$? =?ա?+?E?T?և+?Լj???y?K???$?ա??}?o?t? ? ?ѩ?t??-?bN? ?V?;?Η??|?V?5??5??Ͳ-??m?˅?ə?=q?ɺ^?x?X?ə?Ǯ?ǍP?ȓu?Ǯ?Ł?$?Ƈ+?ǍP?`B?T??T??}???? ?Z?33?t?z?t?\???°!? ?-?M??°!???Õ?öF?S?Õ?/?n?S?ě?Z?Z?ļj?? ??`B?E?Z??Ł?š??o??}?Ł?z??t?33?`B?S?M?t?n?öF??S?°!?S??°!? J???\?%? J?7?Ĝ??hs?`? J??A?\)?%?Ĝ?Ĝ? ?&???? ??G?G?A?|???\)?????h?V?V??? ?(???1?(?D?????C?I??x?D?C?dZ?~?"??^5?H?9?H??"??Q?^5? ???=q??+?l??Q????y?b??y? =?+? =?l???ff?b?`B?T?+?+?$??T?E?`B?t?33??/?????ً?W?#???~?lQ?Z?G?5?#?L???گ?z?F????mu?[@?I ?6?$?o?/???9X?9X??n?hs??33?o?o?S? ??E?+?Q?+???F???M??G??%?Ĝ??;d?;d?h?h??D???O??/??{?V??I?"?#???Q?ȴ?y?ff?y?+?9X?Z??o??j???}?ȴ??}??+??K?+?????}?/?E?T???T???}????S?t???33?o?n?!??\?n? J??? J?????ff???????????s?c?S?B?2?"??????????~?n?^?N?=?-?? ??????E??$??l?+??9X? ?33?\?\?o?&?&?G?n? ??;d?;??O???;d?bN???{?/?p?C?I?C???^5??m?#?^??1'?P??z??t?t??9X?j?ff?l?X??9?~?#??C??? ?dZ? ? ??(?(?I?ƨ?h??/???(?D?R??p?-?1?~??x???+?E?r?r?1'??ff?l?y?E??ȴ?+??E?T??? ?33?9X???\? ?o?o?M??n??hs???hs?bN?hs??Ĝ? J??n???!?-?&?`??`?G?????;d??5??h?R?V?5??%??? ?5??|?\)??V??;d??%?~?rT?e?Y?M?@?4K?'?z???B??q? ?ġ?8??h???z/?m?a^?T?H?<&?/?#U?? ???L??{???C??r? ?u?i9?\?Pi?D?7?+0??_???'??V?????M??}|?q?d?XC?K??s?3 ?&?:? ?j???1??`???'??W?x?l?`?S?GN?:?.}?"?? D??t? ?ף?;??k????9?Q?b?9?9?X???~???~?~?X??7L?^5?x?r?b?b?P?7L???x?H?????^?~??X?#???+?K?+? =?l???t?F???!?Z? ?9X?j??????9X?9X???}?Z?9X????P?`B?`B?T?F?F???E?x?x?X??u?u??r?u?x?1'??H?~?"??x?^5??u?1'??r????b??r?ȴ?P?l?K??b?=q?X???l?E???y?u?+?Q?^?^5? ?x?dZ? ?x?{#?}q?? ?Z???D???-?{???d???N???7???!?o?? ?X???A???+?y???b?Ұ??L?ٙ??5????l???V???????)?w???`?? ? J???3????j??!?#T?%?'?*=?,?.?1'?3t?5?8?:^??AG?C?E?H1?J?L?O?Qh?S?V?XR?Z?\?_;?a?c?f$?hr?j?m?o\?q?s?vE?x?z?}/?}???f???O???9???"?p??^5?^??X?b??#?b???ȴ?T?E??????/?Z?-?33??33?n?M? ?????n?G?o???Z?`B?/??z?j???F??t?S? ???Z???$? =? =?ȴ?P?9??X???m?^5?~??r??Q???x?^???~?X??=q?dZ?^5???C?dZ?C????????p?V?|??;?Ĝ????\)?\)?A??bN??bN?????1?D?(?"?(? ??dZ?ƨ?^?O?\)?-?|?????h?p??V?-??R??V?5??1?;d?A?bN??|?;d?\)?;d??;????bN??5??5????5??????O?/?{??(?/?O?/??O?p?{??ƨ?1?~?^5?#?Q?+?b?7L?9?x??b?r?b??b??1'?1'?1'?=q?#??1'??1'? ?"?^5??V?C??C??D?H?m????^?#?^5?^?u???9?b???+?$??}?9X?/???/?/??`B?9X?Z??`B?ȴ???????-?z? ??Z??t?T?? ??Z? ?/?$?`B? =?+?ȴ?ff???}?\?A??~?~5???~5??|(?zH?{dZ?{m?w?y?xu?w?y?z?u?}?y#?y?wP?|?;d?zH?|?xQ?vE?yX?{dZ?}-?{m?z^5?|(?z?z?z^5?xQ?u?vȴ?tj?u?}?wK?yX?w?vE?yX?yX?y?y#?yX?y#?zH?xQ?x?z?tj?wK?v+?z^5?w =?wK?tz?tz?u?}?u?s33?tz?q?t9X?t=?tB=?tF?tK#?tO?tT?tX{?t\?taa?te?tjF?tn?ts+?tw?t|?t?t?ti?t?tN?t?t4?t?t?t?t?tr?t?tW?t?t?xu?xb?xQ?sF?r!?q?o?mV?kC?k?kƨ?l?p?pbN?n?i?j~?h9?i^?hr?j~?k?mO?k?l?o?l?l1?i?j=q?g?fff?hr?cS?c ?a?`?a7?d?aG?]?`?c ?a7?^?`Ĝ?]-?^R?^?_|?[m?[m?[dZ?\?^5??`?d?co?a?\?^?\?]?`?]p?_;d?^5??]/?]?_w?`?]?_w?]-?_|?_;d?`?^?]p?`?_w?^?co?b?aG?`A?c?cS?f?^5??aG?aG?`?]?`?`Ĝ?dZ?e`B?b\?dZ?f$?f?g?f$?h9?b\?d/?c ?fy?g+?d/?e`B?k ?h9?eT?i?j?h?l?lI?mV?p?n?s33?u?u?v?tz?v?tz?n?lI?l1?kƨ?fy?eT?fy?j?ix?h?h?mV?pbN?p`?n?n?p ?j?j=q?gl?fff?g+?f?hr?ix?i?m?o;?n?k ?k ?mh?q?st?tj?xb?q?r-?o?q?l?nV?i^?i7L?h9?ix?e`B?gl?j=q?j=q?n{?k?h1'?k ?l1?kC?i?n{?m?ix?j=q?g?hr?eT?d?j~?i7L?j~?h1'?j?n{?l?lI?o\)?mh?r?mO?t9X?p`?p ?p`?p ?p ?mh?j~?l1?mO?mV?mO?n{?n?mh?mh?l?l1?nV?p ?lD?o;?ix?gl?j~?i?f$?eT?f$?eT?j~?j?j~?n?q&?n?s?o;?tz?s33?o;?o\)?qhs?tj?qhs?t9X?wP?u?}?yX?wP?rn?p`?vE?st?s33?q&?o?o?lD?j?kC?pbN?pbN?sF?rn?s33?q?t?vE?t9X?xQ?y?vE?u?}?s?u?}?tz?tz?q?p`?nV?qhs?r!?kC?i^?kƨ?j=q?fy?f?j=q?h9?fff?i?i7L?kC?c ?gl?i^?f?c ?d?d?co?gl?d/?dZ?d?`Ĝ?b\?fff?d?eT?e?d/?e?f$?h1'?g?h9?g?h9?g+?gl?f?d?co?e?e?\(?]-?_|?a?a%?`A?c?aG?a%?^?^5??`?]-?\j?Z^5?Z?]?^?\j?ZH?\?[dZ?[dZ?[dZ?YX?[m?Y?V?VE?V+?[?Z?Vȴ?T?U?V?U?}?S33?S?T?Vȴ?Xb?WP?WK?[m?^R?ZH?Y#?]/?["?Y#?^R?^5??]-?^5??\?\?YX?Y?^5??Xb?W =?WK?WK?Xb?ZH?W =?W =?W?Y?X?\(?["?YX?Z^5?Z?V?T9X?Rn?SF?T?R-?T?S33?Rn?St?U?}?Tz?P`?Q?R?Vȴ?WP?S?Rn?U?}?Tz?T9X?U?}?S?R-?Q&?R?Q?Tj?N?MO?M?PbN?Q?P ?N?N{?O?S33?R!?R!?R-?R?R-?Q&?M?P ?Rn?U?Qhs?R-?R-?Q?W?T9X?Q?St?T?S?R!?T?WP?U?St?T?S33?O\)?SF?R?S33?Qhs?SF?U?S?Q&?U?}?YX?YX?U?}?V+?Y?St?T9X?T9X?Y?\?Xb?X?XQ?U?}?Tz?Y#?Z?U?}?W =?Y?Z^5?U?Xb?["?Y#?WK?Z?U?}?R!?X?["?ZH?XQ?[dZ?VE?Xb?SF?R!?Qhs?V?S33?Q?Tj?Tj?SF?PbN?R?R-?Q?PbN?SF?Xb?R-?O\)?O;?P ?R-?S?U?}?T9X?Rn?PbN?St?S33?O;?O\)?PbN?O;?M?LD?O?Q&?MV?LD?I^?L1?O;?N{?MO?O\)?P ?NV?M?M?L?LD?P?P?V+?S33?O;?PbN?Mh?N{?K?MV?M?N?L?P ?NV?M?Q?KC?K ?LI?Qhs?P ?St?S?U?}?Q?S?Tj?O;?KC?O?MO?I^?L1?J~?K ?MO?Kƨ?Mh?LI?L?N?MO?Q&?Q?R-?N?Qhs?M?L?M?O;?MO?MO?NV?LD?LD?MO?O?LI?J~?K ?N?Rn?Tj?R!?PbN?Q?S33?P`?Mh?O?R!?S33?LD?MO?O\)?Q&?R?Tz?O?P ?PbN?KC?MO?MO?Qhs?O?LI?MO?R?SF?SF?O\)?O;?Q&?Q?N{?Mh?LI?Q&?N{?Kƨ?Q&?P`?KC?Kƨ?P?R-?W?Z?Xu?Xu?Vȴ?V?X?ZH?YX?WK?W =?V?U?R-?P`?T9X?T?R-?R?S?R!?St?NV?PbN?NV?O?PbN?M?MO?S?O\)?W?U?T9X?P?Rn?Z?V+?R!?Tj?Tj?SF?S33?T?R-?VE?T9X?Q&?P ?NV?Kƨ?St?Tj?Tz?PbN?Q?P`?SF?S33?R!?P?P`?Q&?P?O?M?J?K ?O;?O\)?L1?O?N{?R!?P ?NV?Qhs?Tj?T?P?PbN?R!?T9X?P?U?Xu?Z?Xu?Y?V+?WP?Xb?[m?W =?Xb?U?WK?WP?S?Tj?Xb?U?YX?VE?[m?Y?Xu?T?Xu?Z^5?WP?W?Z?]/?Z^5?Y#?ZH?\?Y?["?^R?X?]p?\?\?]-?b?^R?]-?[?]-?^?`A?c?b?co?d?cS?`?d?^R?\?Y#?`?`?a%?bM?bM?d?eT?e?g?kƨ?o?lD?mV?p`?sF?u?s?r?w?vE?q&?lI?i?lI?ix?kC?g+?f?_|?`Ĝ?Z?Y?Xu?WK?Xb?\(?Xb?YX?["?Z?["?XQ?YX?[dZ?^R?Y#?\j?b\?d/?`A?\(?[?]p?^?_;d?Y?Y?XQ?Z^5?YX?YX?Xb?Y#?X?[dZ?["?X?Vȴ?YX?YX?Y#?\(?Z^5?YX?WP?\?Vȴ?S?R?P`?O\)?Y?V?V+?St?V+?WK?Tj?R!?W?U?}?P ?Xb?T9X?U?S33?Qhs?Rn?R-?U?T?YX?R-?Q?O;?V?W?Z?Q?R?R?\?Z?St?Rn?P`?S?U?Qhs?W?S33?Q&?S?R-?O?O;?Q?R?Q?Tz?Tj?S33?T9X?U?}?Xb?S?Qhs?SF?Q?U?N?N?Q?Q?R-?P ?N?NV?MO?DZ?H9?O?M?LI?H9?J=q?LI?LI?I7L?N{?Gl?I^?N{?O;?MV?MO?H1'?H1'?J=q?N?O?O?L?O;?P?O?R!?U?O?MV?P`?O\)?L1?Qhs?R!?O?S33?Q?Rn?Tz?VE?U?}?U?}?Q?O?O;?NV?Qhs?R!?Rn?Rn?O?Q&?St?R?St?R!?T?R!?R!?S33?S?Tj?U?T9X?Xb?Z?YX?Xb?VE?W =?Z?_w?[m?\(?\(?]p?]-?^?]/?T?T?WK?VE?Q&?Kƨ?L?MV?R-?VE?P?P ?N?N?R?O\)?O;?K?M?NV?Rn?Rn?P ?MO?MO?O?Q&?Q&?O;?R?PbN?N?Qhs?O\)?Q&?J~?I^?O?N{?R-?Q&?Q&?K ?J=q?N{?LD?O?I?L1?N?I?KC?MO?O?P`?SF?O?O;?MV?O?Q&?R?R-?O;?N{?L?NV?Q?LD?Ix?Kƨ?I^?H?J~?K?G?Fy?L1?I^?L1?J~?K ?Fy?Gl?L?Kƨ?J?Hr?N{?P`?PbN?O?LI?O?MO?L?L1?O?D/?F$?Hr?Mh?J?KC?F?L1?Fy?J?Ix?H1'?LD?K?J?K ?K?Fy?H1'?LI?J~?L1?Q&?MV?I?Fy?G+?I^?Fy?I?DZ?H?E?Co?B\?I^?Fff?J?LD?K ?H1'?L1?MO?Q&?I?J=q?L1?LD?L?Kƨ?J?K ?O?N?N?LI?Kƨ?J?L?Mh?LI?PbN?Mh?J?H9?H1'?I^?H?G?Ix?F?D/?E?M?H9?J?H?L?Kƨ?I^?KC?MO?P`?N?J=q?K?I?N?LD?PbN?O?K?NV?MO?LI?LD?MV?O?P?MO?LD?O?N?Qhs?P ?O\)?Q?Tj?Xb?U?Y#?Y?d?h1'?h?lD?g?_|?W?S?U?U?St?U?Rn?SF?P`?O?L?NV?Qhs?Q&?N{?MV?M?O;?Q&?P ?O\)?PbN?Q?SF?R!?U?S?V?SF?VE?U?}?P`?Q?R!?T9X?Vȴ?R?R!?T9X?S33?VE?P`?PbN?Qhs?VE?[dZ?Z^5?Y?Z?Y?WK?R!?Tz?Y#?Z?U?W?X?\j?\j?a7?`A?^5??\?["?]-?a7?co?_w?`Ĝ?]/?]p?Z?X?Vȴ?VE?Y#?]/?Y?Vȴ?WK?Y?Xu?VE?["?^?Z?W?U?VE?Q&?V?W =?X?X?Xƫ?X?XX?X.?X?X?X?X?X^?X5?X ?Xw?Xp?Xi?Xbe?X[;?XT?XL?XE?X>?X7k?X0B?X)?X!?X?X?X r?XH?W?W?W?W?Wx?WO?W%?W?W?W?W?WU?W,?W?W?W?W?W\?W}2?Wv ?Wn?Wg?W`?WYb?WR9?WK?WC?W[?T72?T0?T(?T!?T?Tb?T 8?T?S?S?S?Si?S??S?S?S?Sę?So?SE?S?S?S?S?Sv?SL?S"?S|?Su?Sn?Sg|?S`S?SY)?SQ?SJ?SC?S?P?P?P?P~?Pwo?PpE?Pi?Pa?PZ?PS?PLu?PEL?P>"?P6?P/?P(?P!|?PR?P)?P ?P?O?O?OY?O/?O?O?OҲ?Oˉ?O_?O6?O ?O?O?O?Of?O?@?C?Hr?K ?F?I?Fff?H?M?H1'?F?G?LI?I^?I^?Ix?I^?I^?K ?MO?MV?K?G?C?E?ET?E?H?K?I^?D/?G?Fy?CS?G?J=q?P`?K?F?I?G?G?G?H?H9?H9?LI?J~?J=q?I7L?H9?MV?Ix?D/?G?Co?D/?K?Gl?H9?N?N?P?L1?MO?MV?Q&?O;?U?T?Q&?R!?SF?Q?PbN?SF?O?N?MV?O?MO?J?Mh?N?Tz?St?Tz?PbN?P ?O;?NV?MV?Kƨ?O?S33?R!?Qhs?PbN?M?J=q?LD?LD?L?I7L?J?MV?J?E`B?G?J=q?E?BM?ET?H?LI?D?BM?B\?B\?A%?B?A7?A%?<?>?\?䕁?9???䳧??=?\?>R?=-?8ҡ?:?;???Ү?\??>5???>??;??8??Ү?=???%?+?Ү?1????ٴ??;?䕁?䳧?>?\??;?Ĝ?=-?6ȴ?4j?5???7??;?>5??;??=?:?=?=-?;?<(?9#?AG?=p?=?=p?@?R????>R?=?=-?=?=????B J?>5??=/?:5?9?:?:?9#?<(?@Ĝ?BM??w?<?9?;"?=/??;d?=p?:?9X?9#?:?A%?5??\?/??7???7??ٛ?;"?>R??????;?=-???>R?Ү?=/??;?7?<(?>?=/?>?BM?D?BM?>R?B J?C?B J?>???:?:5???ٛ?%?%???:?;?>?<(?7P?:H?;"??|?=-?9?:H?@??w?=p?B\?Gl?G?H9?G+?G?C?B?B J?L1?Gl?D?E`B?A7?D?F$?M?N?Gl?Ix?Gl?J~?MO?P`?P ?I?A?B?H1'?H9?=?ET?Fy?G?Hr?@A?D/?Fff?BM?D?A?Co?J~?B\?Fy?E?C?F$?D/?CS?C?CS?>R?>?@Ĝ??;d?DZ?AG?@?=/?;"?>??|?AG?@A?:H?CS?I^?B J?CS?@A?A7?E`B??|?@?AG??>5??A?@A?7?>?@?L?Fy?@Ĝ?A7?=-?D?DZ?B?B J?D?Gl?K ?H9?C ?D?MV?G+?B?Co?@A?<(?=-?@Ĝ?CS?>?B J?:?;dZ?>?=p?ET?Co?=/?>?;?>5??@A?BM?C ?B\?B\?D/?D/?D?A%?>5??;?9????%?=?8?9?>5??1'?1??䕁?;"?ٴ?Ү?^?ёh??9?ұ?????>5??=?R?A%?A7?=?=/?>5??=-?@?A7?@?>?E?E`B?A?AG?>?Co?;?@Ĝ?;??;d?>?A7?E?AG?=p?DZ?B J?D?@Ĝ?=-?ET?AG?@Ĝ??;d?B J?ET?@?>5??:?7K?9X?7 =?5?}?8b?:?Hr?@Ĝ?AG?B\?D?F$?B\?R?F?D?A%?@Ĝ?@Ĝ?B J?Co?CS?@Ĝ?R???\?????>???;"?䳧?Ĝ?>?=/?%?=/???<?;dZ?B J?<?;?@?>?^?ƨ?%?6ȴ?1?3????=/?5???>5??=?Ĝ??=-?\?;?:5?5??>R??8?9?=?<(?9?7?>R?%?5?;m?<?8Q?:H?J=q?Ix?G+?A?8??w?8b?3?5?0`?6ȴ?8Q?4z?8b?6+?333?2-?@?9?9?8Q?7 =?AG?:^5?9?7K?=-?9?;"?8?5?3F?2!??|?>R?7P?8b?7?;"?4j?3?6E?9?;?9?:^5?6E?Co?B J?ET?;m?Co?;"?>??|?D?9X?6E?6+?49X?;dZ??w?7P?5?}?5?7 =??|?9?9X?>?5??<?;dZ?8Q?7?7K?E?J=q?D?=-?R?;?=/?>?<(??|?:?6+?7P?8?<(?8u?/?0?7 =?2?1&?/\)?2-?7 =?;?AG?;dZ?5?:^5?6+?8u??w?333?6+?Fy?@??|?=?8b?=-?A%?>5???;?ٛ?R?4z?4j?1&?7P?:?Co?F?0`?0`?7?8b?6ȴ?>5??1?333?5?5?}?7P?6E?8b?3?1?6?6?0?ET?A7?3F?1&?;"?@?D/?>5??8b?6E?6ȴ?5?;dZ?:^5?7K?:?9#?:?3?:?B J?<?9?49X?=?H?MV?E?B J?C??=/?-?9X?6+?7K?6+?4z?0bN?,I?1&?4j?5?3t?8?4?A%?=/?2?>5??6?/;?*?8?;dZ?8u?2?8?4j?2-?3F?.{?(9?7P?9#?0 ?2n?@?=/?:H?2?1&?3t?2n?1hs?-V?-V?0 ?;?9X?-O?3t?5?}?8Q?0 ?;"?;"?:^5?R?=-?%?<?5?}?.?:?4j?=-?2n?1hs?4?9?7?2n?0 ?6E?1&?4j?3t?49X?6ȴ?)7L?)7L?4?DZ?<(?3t?+C?)^??|?D/?0`?R?333?4z?:?4?9#?1hs?1?2!?3?/\)?49X?:^5?2-?4z?333??;d?8Q?>R??w?8b?7?:^5?;?=-?6?7P?3t?.?9?:H?6+?A%?@?5?A%?G+?@??;d?=-?>R?>?I^?B\?ET?7 =?=?A7?5?Rn?I7L?@Ĝ?6E?9?:H?BM?ET?KC?:^5?D?E?MO?D/?=-?>?=/?>R?8Q?<(?5?49X?9?8u?8b?2!?:?7K?1?4j?6E?;"?7P?5?}?333?0`?0bN?/\)?0?;"?;"?;?6?1?4z?,1?)?6??|?1?4?B J?I7L?B J?6E?C ?I^?C ??|?AG?E??w?>??C ?Fff?G?L?=-??|?Fff?AG?>5??D/?CS?Ix?Qhs?J=q?H9?D?@?B?V+?Rn?P?E`B?Co?L1?Vȴ?R?L?B?BM?J~?Hr?C ?LD?D?Fff?R?N?@?LI?J~?E?L1?Rn?V?R?CS?H?G?I7L?=-?A%?Co?N?F?4?=/?5?;"?Fy?Fff?Co?E`B?C ?Gl?I?R-?Kƨ?I7L?J=q?H?G+?L1?H?J~?Gl?B J?E`B?B?K ?[dZ?X?O?I7L?:?E?NV?O\)?O;?O;?PbN?ET?E?H?Fy?P?Rn?P?P?I7L?DZ?Fff?N?O;?Q&?Q?PbN?O\)?R!?PbN?F??;d?@?J?MO?VE?T?P`?LI?NV?PbN?M?Ix?I^?Gl?I?G?G?YX?Y?Q?X?WP?W =?^?Z^5?T?Tj?aG?\j?[m?[dZ?YX?Q?N?PbN?K?ET?A7?F?Mh?Q?Qhs?L1?L?I?I7L?L?I?BM?A7?KC?Kƨ?N?KC?G?O\)?Vȴ?[dZ?O\)?E?LI?St?XQ?P ?T?U?K ?I^?N?Q&?Rn?Q?W =?^?_;d?Rn?O?N?R!?Q&?N?H?O\)?[dZ?[m?Z?P`?P?P ?PbN?O?P ?Q?Q?N?W?X?Z?PbN?O?St?T9X?R!?\j?\(?[dZ?R?Mh?N{?N{?Z^5?^?[?Z^5?R-?P ?Qhs?R!?O?T9X?T9X?N?O;?O?N?MV?Vȴ?U?PbN?O?O?R-?U?T?VE?[?_;d?X?Xb?K?G+?K?N?N?O\)?I^?Fff?Kƨ?O?N{?MV?@A?=p?8u?6+?7K?9#?& "dev$null") imcopy (fitsnombre//"[0]", prepend//fitsnombre) if (malnombre!="") { imdel (prepend//malnombre, ver-, >& "dev$null") imcopy (malnombre, prepend//malnombre) } } if (zed!=0) { hsel (prepend//fitsnombre//"[0]", "CRVAL1", yes) | scan (crval1) crnew1 = crval1 - log10(zplus1) hedit(prepend//fitsnombre//"[0]","CRVAL1",crnew1,add+,del-,show-,update+,ver-) if (malnombre!="") { hedit(prepend//malnombre,"CRVAL1",crnew1,add+,del-,show-,update+,ver-) } } #--flux sarith (prepend//fitsnombre//"[0]","*",temp1,temp2,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) imdel (prepend//fitsnombre//"_"//excurve//colorexcess,ver-,>&"dev$null") imcopy (temp2, prepend//fitsnombre//"_"//excurve//colorexcess, ver-) #--error, and combine if (malnombre=="") { sarith(prepend//fitsnombre//"[0][*,3]","*",temp1,temp2,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge+,rebin+,errval=0.,ver-) imcopy(temp2//"[*,1]",prepend//fitsnombre//"_"//excurve//colorexcess//"[*,3]",ver-) } else { sarith (prepend//malnombre,"*",temp1,prepend//malnombre//"_"//excurve//colorexcess,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) } print ("Created "//prepend//fitsnombre//"_"//excurve//colorexcess) #--divide by composite if (cuasarnombre!="none") { sarith (prepend//fitsnombre//"_"//excurve//colorexcess,"/",phistdir//"sdss_qso_"//cuasarnombre//".fits",prepend//fitsnombre//"_"//excurve//colorexcess//"div"//cuasarnombre,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) print ("Created "//prepend//fitsnombre//"_"//excurve//colorexcess//"div"//cuasarnombre) } #--IRAF multispec format } else if (fmt=="log") { if (prepend!="") { imdel (prepend//fitsnombre, ver-, >& "dev$null") imcopy (fitsnombre//"[0]", prepend//fitsnombre) if (malnombre!="") { imdel (prepend//malnombre, ver-, >& "dev$null") imcopy (malnombre, prepend//malnombre) } } if (zed!=0) { hsel (prepend//fitsnombre//"[0]", "CRVAL1", yes) | scan (crval1) crnew1 = crval1 - log10(zplus1) hedit(prepend//fitsnombre//"[0]","CRVAL1",crnew1,add+,del-,show-,update+,ver-) if (malnombre!="") { hedit(prepend//malnombre,"CRVAL1",crnew1,add+,del-,show-,update+,ver-) } } #--flux sarith (prepend//fitsnombre//"[0]","*",temp1,prepend//fitsnombre//"_"//excurve//colorexcess,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) #--error, and combine if (malnombre!="") { sarith (prepend//malnombre,"*",temp1,prepend//malnombre//"_"//excurve//colorexcess,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) } print ("Created "//prepend//fitsnombre//"_"//excurve//colorexcess) #--divide by composite if (cuasarnombre!="none") { sarith (prepend//fitsnombre//"_"//excurve//colorexcess,"/",phistdir//"sdss_qso_"//cuasarnombre//".fits",prepend//fitsnombre//"_"//excurve//colorexcess//"div"//cuasarnombre,aper="",band="",beam="",apm=0,rev-,ign-,form="multispec",ren-,offset=0,clobber+,merge-,rebin+,errval=0.,ver-) print ("Created "//prepend//fitsnombre//"_"//excurve//colorexcess//"div"//cuasarnombre) } } imdel (temp1, ver-, >& "dev$null") imdel (temp2, ver-, >& "dev$null") end ./vcalc.cl0100644000151400015140000000164207345460343011615 0ustar phallphallprocedure vcalc(zem,zabs) # vcalc.cl -- calculate velocity offset in quasar rest frame # # 010520: created by PBH real zem {prompt="Emission Redshift"} real zabs {prompt="Absorption Redshift"} real zemerr=0 {prompt="Emission Redshift Uncertainty"} real zabserr=0 {prompt="Absorption Redshift Uncertainty"} struct *list begin real z_em, z_abs, ratio, beta, vel, emerr, abserr, betaerr, velerr z_em = zem z_abs = zabs emerr = zemerr abserr = zabserr ratio = (1.+z_em)/(1.+z_abs) beta = (ratio**2.-1)/(ratio**2.+1) vel = beta*299792.458 if(emerr!=0||abserr!=0){ ##betaerr=2*sqrt(2*((emerr/(1+z_em))**2.+(abserr/(1+z_abs))**2.)) #betaerr=(2*ratio/(1+ratio**2.))*sqrt(emerr**2./(1+z_em)+abserr**2./(1+z_abs)) betaerr=((4*ratio**2.)/(1+ratio**2.)**2.)*sqrt((emerr/(1+z_em))**2.+(abserr/(1+z_abs))**2.) velerr = betaerr*299792.458 print (beta, "+- "//betaerr//" "//vel//" +- "//velerr) } else { print (beta, vel) } end ./wcalc.cl0100644000151400015140000000070007344705435011613 0ustar phallphallprocedure wcalc(air) # wcalc.cl -- calculate vacuum wavelength from air wavelength # # 010520: created by PBH real air {prompt="Air wavelength in Angstroms"} struct *list begin real onda, vacuum, n, sigma, sigma2 onda = air sigma2 = (10**8.)/air**2. n = 1 + 0.000064328 + 0.0294981/(146.-sigma2.) + 0.0002554/(41.-sigma2.) vacuum = air * n print (vacuum) if (onda<1600) print ("# WARNING! formula intended for use only at >1600 Ang!") end ./mkobs.cl0100644000151400015140000001566507346004074011646 0ustar phallphallprocedure mkobs (fitsfile, errfile, specfile) # If the FITS file is a standard IRAF multispec file (use format=lin or # or format=log depending on the pixel wavelength units), or a standard SDSS # spectro1d format=c1d (Chicago1D) or specBS format=p1d (Princeton1D) file, # then using errfile="" will extract the error array correctly. If you specify # the errfile instead, you must specify it EXACTLY, e.g. "x.fits[0][*,3]". # # If you have two one-dimensional FITS files, one with the spectrum and one # with the error array, use the default format=c1d, it will work correctly. # # If you have no error array, just use the name of the spectrum again. # # **add option to create new fits file of just spectrum and error array # e.g. imcopy 0442/spPlate-0442-51882.fits[0][*,528] spPlate-0442-51882_528.fits string fitsfile {prompt="Root name of FITS spectrum (no extension)"} string errfile="" {prompt="Root name of FITS error array"} string specfile="" {prompt="Observed spectrum text file to create"} string format="c1d" {enum="c1d|p1d|lin|log",prompt="Format (c1d|p1d|lin|log)"} bool normalize=no {prompt="Normalize spectra by 1E-17?"} int smooth=1 {prompt="Boxcar smooth by how many pixels?"} struct *list begin string phistdir # pathname of PHIST source code directory string temp1, fitsnombre, nombre, otronombre, nuevonombre, malnombre, fmt string extfits, prepend, crval1, crnew1, newname, temp0, mal_nombre, temp2 real zed, xmin, xmax, ymin, ymax, junk, obsmin, obsmax, conclusion, numero real denominator, numerator, colorexcess, z bool miny, errores, falsificacion, princeton, eco, go, libel, flatten, excurve int alisar fitsnombre = fitsfile malnombre = errfile nuevonombre = specfile fmt = format flatten = normalize alisar=smooth temp0 = mktemp("temp0") temp1 = mktemp("temp1") temp2 = mktemp("temp2") nombre=temp1 numerator=1.0E17 #--crap needed for smoothing mal_nombre=malnombre if (malnombre=="") { if (fmt=="p1d") { mal_nombre=fitsnombre//"[1]" } else if (fmt=="c1d") { mal_nombre=fitsnombre//"[0][*,3]" } else if ((fmt=="lin") || (fmt=="log")) { mal_nombre=fitsnombre//"[*,1,4]" } } #--smoothing if (alisar<=0) { alisar=1 } if ( (alisar!=1) && (!imaccess(fitsnombre//"sm"//alisar)) ) { temp0=mktemp("temp0") temp2=mktemp("temp2") print("s\ni\nq\n",>>temp0) splot(fitsnombre//"[0]",line=1,cursor=temp0,new_im=fitsnombre//"sm"//alisar,boxsize=alisar) splot(mal_nombre,line=1,cursor=temp0,new_im=temp2,boxsize=alisar) if(fmt=="p1d"){ imar(temp2,"*",alisar,fitsnombre//"errsm"//alisar,divz=0,ver-,noact-) } else { imar(temp2,"/",sqrt(alisar),fitsnombre//"errsm"//alisar,divz=0,ver-,noact-) } del (temp0, ver-) ; imdel (temp2, ver-) if(malnombre!=""){ malnombre=malnombre//"sm"//alisar imren(fitsnombre//"errsm"//alisar,malnombre,ver-) fitsnombre=fitsnombre//"sm"//alisar print("Created "//fitsnombre//" & "//malnombre) } else { if (fmt=="p1d") { print("Created "//fitsnombre//"sm"//alisar//" & "//fitsnombre//"errsm"//alisar) } else if (fmt=="c1d") { imcopy(fitsnombre//"errsm"//alisar//"[0][*,3]",fitsnombre//"sm"//alisar//"[0][*,3]") imdel(fitsnombre//"errsm"//alisar,ver-) print("Created "//fitsnombre//"sm"//alisar) } else if ((fmt=="lin") || (fmt=="log")) { print("Created "//fitsnombre//"sm"//alisar//" & "//fitsnombre//"errsm"//alisar) } fitsnombre=fitsnombre//"sm"//alisar } } if (nuevonombre=="") { nuevonombre=fitsnombre//".obs" } #--idlspec2d format if (fmt=="p1d") { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { # --list out flux & 1/sigma^2 in log10(lambda) if (!access(nombre)) { listpix (fitsnombre//"[0]", wcs="world", >> nombre) if (malnombre=="") { listpix (fitsnombre//"[1]", wcs="world", >> nombre//"_errs") } else { listpix (malnombre, wcs="world", >> nombre//"_errs") } } # --convert to linear lambda in observed frame, and to sigma from 1/sigma^2 filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;(1./sqrt($2@2))", format="%9.3f %10.6f %10.6f", >> nuevonombre) del (nombre//"_errs", ver-, >& "dev$null") print("Created "//nuevonombre) } else { print (nuevonombre//" already exists!") } #--spectro1d format } else if (fmt=="c1d") { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { # --list out flux & sigma in log10(lambda) if (!access(nombre)) { listpix (fitsnombre//"[0][*,1]", wcs="world", >> nombre) if (malnombre=="") { listpix (fitsnombre//"[0][*,3]", wcs="world", >> nombre//"_errs") } else { listpix (malnombre, wcs="world", >> nombre//"_errs") } } # --convert to linear lambda in observed frame if (flatten) { filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1*"//numerator//";$2@2*"//numerator, format="%9.3f %10.6f %10.6f", >> nuevonombre) } else { filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", format="%9.3f %10.6f %10.6f", >> nuevonombre) } del (nombre//"_errs", ver-, >& "dev$null") print("Created "//nuevonombre) } else { print (nuevonombre//" already exists!") } #--IRAF format } else if (fmt=="lin" || fmt=="log") { #--create spectrum text file, if needed junk=0 if (!access(nuevonombre)) { # --list out flux & sigma in log10(lambda) if (!access(nombre)) { listpix (fitsnombre//"[*,1,1]", wcs="world", >> nombre) if (malnombre=="") { listpix (fitsnombre//"[*,1,4]", wcs="world", >> nombre//"_errs") } else { listpix (malnombre, wcs="world", >> nombre//"_errs") } } # --convert to linear lambda in observed frame, if needed if (fmt=="log") { if (flatten) { filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1*"//numerator//";$2@2*"//numerator, format="%9.3f %10.6f %10.6f", >> nuevonombre) } else { filecalc (nombre//","//nombre//"_errs", "10.**$1@1;$2@1;$2@2", format="%9.3f %10.6f %10.6f", >> nuevonombre) } del (nombre//"_errs", ver-, >& "dev$null") } else { if (flatten) { filecalc (nombre//","//nombre//"_errs", "$1@1;$2@1*"//numerator//";$2@2*"//numerator, format="%9.3f %10.6f %10.6f", >> nuevonombre) } else { filecalc (nombre//","//nombre//"_errs", "$1@1;$2@1;$2@2", format="%9.3f %10.6f %10.6f", >> nuevonombre) } del (nombre//"_errs", ver-, >& "dev$null") } print("Created "//nuevonombre) } else { print (nuevonombre//" already exists!") } } del (temp1, ver-, >& "dev$null") print ("3800 0", >> temp1) concat (temp1//","//nuevonombre) | graph (pointmode-) #graph (nuevonombre, pointmode-) fields (nuevonombre, "1,3") | graph (pointmode-, append+) del (temp1, ver-, >& "dev$null") end ./hexprint.cl0100644000151400015140000000034307315427317012364 0ustar phallphallprocedure hexprint(number) # hexprint.cl -- decode a hex-encoded number # # 010624: created by PBH int number {prompt="Decimal number to convert to hexadecimal"} begin int venda venda=number printf ("%x\n", venda) end ./seg2dec.cl0100644000151400015140000000447507404165724012051 0ustar phallphallprocedure seg2dec(ra,dec) # seg2dec.cl -- convert sexigesimal coords to decimal # # 010620: created by PBH real ra {prompt="Right Ascension (hh:mm:ss)"} string dec="" {prompt="Declination (dd:mm:ss or \"+dd:mm:ss\")"} string coords="" {prompt="File of coordinates to convert"} int numra=6 {prompt="Number of output decimal places in RA"} int numdec=6 {prompt="Number of output decimal places in Dec"} bool plus=yes {prompt="Output plus sign for Declination > 0?"} struct *list begin real ascencion, declinacion string expediente, tempfile, strdec int ranum, decnum, ralen, declen bool spiffy, hassle expediente = coords ranum = numra ralen=3+1+ranum ; if (ranum==0){ralen=10} decnum = numdec declen=3+1+decnum ; if (decnum==0){declen=10} #spiffy = format hassle = plus if (expediente=="") { ascencion = ra strdec = dec if(substr(strdec,1,1)=="+"){strdec=substr(strdec,2,strlen(strdec))} print (strdec) | scan declinacion if(hassle){ del ("_???_lola_???_", ver-, >& "dev$null") tempfile="_run_lola_run_" print (15*ascencion, declinacion, >> tempfile) print ("{printf \"%"//ralen//"."//ranum//"f +%"//declen//"."//decnum//"f\\n\", $1, $2}", >> "_awk_lola_awk_") !touch _ran_lola_ran_ !awk -f _awk_lola_awk_ _run_lola_run_ | sed -e 's/\ + / +/' | sed -e 's/\ + / +/' | sed -e 's/+-/ -/' >> _ran_lola_ran_ type ("_ran_lola_ran_") del ("_???_lola_???_", ver-, >& "dev$null") }else{ printf ("%"//ralen//"."//ranum//"f %"//declen//"."//decnum//"f\n", 15*ascencion, declinacion) } } else { list=expediente del ("_???_lola_???_", ver-, >& "dev$null") tempfile="_run_lola_run_" while (fscan(list,ascencion,strdec)!=EOF) { if(substr(strdec,1,1)=="+"){strdec=substr(strdec,2,strlen(strdec))} print (strdec) | scan declinacion if (hassle) { printf ("%"//ralen//"."//ranum//"f %"//declen//"."//decnum//"f\n", 15*ascencion, declinacion, >> tempfile) } else { printf ("%"//ralen//"."//ranum//"f %"//declen//"."//decnum//"f\n", 15*ascencion, declinacion) } } if(hassle){ print ("{printf \"%"//ralen//"."//ranum//"f +%"//declen//"."//decnum//"f\\n\", $1, $2}", >> "_awk_lola_awk_") !touch _ran_lola_ran_ !awk -f _awk_lola_awk_ _run_lola_run_ | sed -e 's/\ + / +/' | sed -e 's/\ + / +/' | sed -e 's/+-/ -/' >> _ran_lola_ran_ type ("_ran_lola_ran_") del ("_???_lola_???_", ver-, >& "dev$null") } } end ./sdss_qso_median.fits0100644000151400015140000010340007315675732014251 0ustar phallphallSIMPLE = T / Fits standard BITPIX = -32 / Bits per pixel NAXIS = 1 / Number of axes NAXIS1 = 7755 / Axis length ORIGIN = 'NOAO-IRAF FITS Image Kernel July 1999' / FITS file originator OBJECT = 'SDSS composite' / Name of the object observed EXTEND = F / File may contain extensions DATE = '2001-06-25T17:00:28' / Date FITS file was generated IRAF-TLM= '14:00:27 (25/06/2001)' / Time of last modification DC-FLAG = 0 CRPIX1 = 1. CRVAL1 = 800.5 CDELT1 = 1. END >u?-V>t>V>e`B=#??@>I^>?|??BM? 7L> ??L1?H1'>I^>ě>{m?co?;> ?hs?&?=>V>?P>?+ƨ=9X?K>ƨ>?E`B> ? ?@A??hs?dZ>T?>?9X?P>Q>u?7 =>~?K?ZH??xb?mV?2!?>R??K??#?? ~?G??|j??t??^?'?H1'??j??dZ?F?R?^5?b??}?S?9X?@ -@"@ Z?ƨ?t?S?-?r@4Z@S@?{@V@'+@ 1?A@ G@ =q@)x@1#@@bN@g =@4@,@U@}?}@e`B@@@c"@s"@~E@r@V@a^@@~@Q&@mp@}h@D/@v{@`1'@U@@@7L@~@@K@#@%@@z=q@m@7@|I@o@@M@x @y@`@R J@X@h@hs@#@|D@XbN@z@j@"@!@j@D@uO@@@v@@@A@D@@u@S@x@+@ @j@+@z@@!@@P@r@&@F@@;@@@ @@I@w@}O@-@w@@hs@@7@ @@S@?}@m@^5@D@=q@@@@=q@;d@ =@@=q@`@V@|@S@AA@@ڟ@띲@CAX@/Av@@Z@@bN@^@C@(@@ J@"@;@ =@v@@‡+@!@X@9X@+@@hs@9@n@t@9@@\@&@K@`B@E@@?}@H@@;d@p@@`B@-@!@v@j@@@\@b@@H@@`B@p@@@S@dZ@ƨ@7L@Z@ƨ@~@b@@p@@@+@7@ @@@@@^@^5@I@o@@7@V@D@RV@p@+@&@Q@D@@ƨ@@t@@O@ff@t@A@r@~@9@@n@ @F@1'@ff@7@\@Ĝ@@V@@@@#@@ȴ@w@E@@1'@T@@@`B@\@@S@ƨ@b@ =@1'@I@ @ J@;@`B@(@V@Ǖ@T@P@b@9@O@@j@@@Ĭ@@@@v@HA@-@@A +A ffA dZA9A#A&EA(A'lA3&A>=>R=հ=˰>$@=󶰪@=@;m@:@:H@; @;ƨ@:@:@: J@9G@8@: J@:=q@:=q@9^@9X@9G@8@9@:M@:@9@: J@97@:n@:@;"@:-@;@:@:\@:n@:@:@;@:@;@=/@<@;@<9X@;@R>@>@=T@?@=T@>v@?\)@>@?@?;@?|@?;@AG@Ahs@A@@r@A7L@Ax@A@B@BM@BH@Dj@B~@B@CS@BH@CC@CF@CC@D/@D@D@DI@C"@C@C"@Dz@E`B@DD@E@E`B@E@EO@G@G\)@G@G|@H@G@I7@I@J J@IG@G@Fy@G|@Fy@FV@EO@D@D@C@B~@D@C33@C"@A@Bn@A^@A%@A&@@1'@?\)@@@?+@@1'@>ȴ>?;尪>>>+>+===-=?=í><@=@>$@=հ@>ff@>v@>5?@? =@@bN@A@@r@B@B^5@C@Ct@DI@Dj@DI@C@CF@CS@AG@@b@@Q@@Q@>@1'?@?;尪?+?@?;尪>ڴڰ===v@@@C@E`B@G@I@MO@OP@Rn@V@Y7@^V@`bN@dZ@fRiG@lj@n@pA@ol@ow@n+@o+@l9X@k @i@eT@bM@_@[C@X@Tj@PQ@L/@I%@F@Cƨ@B-@>R<(@97@8Ĝ@7l@5`B@4I@4@2@0A@/P@0@.{@-@.ff@.{@,@,@,z@+S@+ƨ@)@)@'@';@&@&ȴ@&V@&{@%@$@$9X@$9X@$D@$I@"\@!hs@ `@ @ u@ @@y@@E@h@@@m@1@I@Z@@F@H@@#@%@X@1'@Ĝ@%@;@@@{@@5?@ff@`B@O@`B@j@z@/@ƨ@@C@^5@^5@@@@@#@b@@#@@K@ȴ@w@@R+@R@@@+@A@Q@Ĝ@&@ @@=q@@@x@H@@@n@"@@@ @@=q@@-@ @^5@\@C@ @H@@@=q@~@@@-@hs@@\@ @M@-@@@@hs@X@7L@&@9@X@@1'@;@@@@|@ @Q@ȴ@v@y@+@ p@ @@ O@ p@ j@ @ 9X@ Z@ t@ 33@ @ J@`@@ @u@@l@+@E@E@/@h@p@j@j@1@o@!@^5@7L@M@7L@u@Q@@??-?h?-?5???/??j?O?{?D?O??ƨ?m?O??~?/?O?h?D??ƨ?p??h??p??V?V?D?I?dZ??dZ?? ?dZ?I?^?m?I??I??dZ?O?I?H?ƨ?I??I??ƨ?~??C?dZ?ƨ??I?? ?=q??#?=q?^5???X??Q?1'?r??9??^?~??~? ?"??p? ?V?V???;@ ?;@b?@bN@&@@=q@hs@^@n@=q@^@hs@\@\@@@~@S@~@@@@Q@@Ĝ@r?????;d?|??|????@Q????V??;d?@b@??;@@9@@ @@@ @@@7@7@%@@&@X@7L@-@n@=q@@!@M@@C@dZ@1@ @=q@ J@~@=q@@@@@-@7@hs@ @r@Q@%?|?;@@A?5??j???5??/?-?"?"?j?D?V?1?D?ƨ?(??dZ?H?7L?^??x?7L?9??9???1'?+?y??ȴ?ff?ff??T??T??E?T??}?l?K?$?E?l?K??T?+??}?S??33?33??j?o?S?S??-?!?????o?\???Ĝ?`?%?|?bN???????-??|??5??C??H?ƨ??x?=q?x?u?=q??l?+?K?E?P?l?䛦?`B?/?`B?Z?j??F??Z??j???`B??z?Z??9X?`B??+??P?r?陚?ȴ?T?Z??9X??M?&?? ?G?G?&?ߝ?bN? ?ߝ?ޱ?A?? ?߾w??;?|??bN??ޱ?|??A?hs?V??޸R???5??{? ???V??ޱ??ޗ?ޱ????\)?ߝ?`?Ĝ?-? ?`?&?G?`?&???`??F??\?Z?S???K?u??O???(?7L?`B?㕁?t?bN?{?p?O?܋D?V?ܬ?/?ܬ?1?ڟ? ?ٙ??7L?(?X?#?x?ؓu???X??r?^5?Q?ٙ?7L?ش9? =?r?ؓu?X?=q?1'?x?ٙ?ٙ?Q??7L?X?׮?b?l?ff?y?և+?l?׍P?׍P?և+?$? =?ա?+?E?T?և+?Լj???y?K???$?ա??}?o?t? ? ?ѩ?t??-?bN? ?V?;?Η??|?V?5??5??Ͳ-??m?˅?ə?=q?ɺ^?x?X?ə?Ǯ?ǍP?ȓu?Ǯ?Ł?$?Ƈ+?ǍP?`B?T??T??}???? ?Z?33?t?z?t?\???°!? ?-?M??°!???Õ?öF?S?Õ?/?n?S?ě?Z?Z?ļj?? ??`B?E?Z??Ł?š??o??}?Ł?z??t?33?`B?S?M?t?n?öF??S?°!?S??°!? J???\?%? J?7?Ĝ??hs?`? J??A?\)?%?Ĝ?Ĝ? ?&???? ??G?G?A?|???\)?????h?V?V??? ?(???1?(?D?????C?I??x?D?C?dZ?~?"??^5?H?9?H??"??Q?^5? ???=q??+?l??Q????y?b??y? =?+? =?l???ff?b?`B?T?+?+?$??T?E?`B?t?33??/????T??E?E?K?b?9?u?#?=q?5??9X??`?E?x??n?̋D?M??K?ȴ???33?o?/???9X?9X??n?hs??33?o?o?S? ??E?+?Q?+???F???M??G??%?Ĝ??;d?;d?h?h??D???O??/??{?V??I?"?#???Q?ȴ?y?ff?y?+?9X?Z??o??j???}?ȴ??}??+??K?+?????}?/?E?T???T???}????S?t???33?o?n?!??\?n? J??? J?????ff???y??b?x?#?b?X?X?H??^5?=q?1?O??M?z?l??I?m???`?-?D?x?1'?l?+???}?T????E??$??l?+??9X? ?33?\?\?o?&?&?G?n? ??;d?;??O???;d?bN???{?/?p?C?I?C???^5??m?#?^??1'?P??z??t?t??9X?j?ff?l?X??9?~?#??C??? ?dZ? ? ??(?(?I?ƨ?h??/???(?D?R??p?-?1?~??x???+?E?r?r?1'??ff?l?y?E??ȴ?+??E?T??? ?33?9X???\? ?o?o?M??n??hs???hs?bN?hs??Ĝ? J??n???!?-?&?`??`?G?????;d??5??h?R?V?5??%??? ?5??|?\)??V??;d???R?5??;d?5??;?w?h?R?V?5???&??? ???!???}??Z?t??33?9X?n?o?33?!? ???E?l?T?$?ȴ???x?~???^5??~?#?X?dZ? ?I?ƨ?dZ?^5?#?????r??ff?y?P?l?ȴ???}??? ??9X?S???!?-?w???5???I?O????w?{??? ?^??^5???Q?9???9?Q?b?9?9?X???~???~?~?X??7L?^5?x?r?b?b?P?7L???x?H?????^?~??X?#???+?K?+? =?l???t?F???!?Z? ?9X?j??????9X?9X???}?Z?9X????P?`B?`B?T?F?F???E?x?x?X??u?u??r?u?x?1'??H?~?"??x?^5??u?1'??r????b??r?ȴ?P?l?K??b?=q?X???l?E???y?u?+?Q?^?^5? ?x?dZ? ?x?~?"?H?"?=q?C?"?^5?D?V?h?V?{?5??m???O??/??(?h?V??bN?;?`?33?S? ?y?????m?C?(??D?O?{?j??M?F??j???1'?Q?^5?dZ?h?Ĝ?bN?w?D?X?K?l?y??P??T???? ??ȴ??ff??y?+??ff?/?M?\)?/?ƨ??u?ȴ?j?`B??M?o?F????;d?p??I?m?/?/?O??/?(?C?dZ?"?1?m?1?C?=q???#???r?r?9??^??^5?^??X?b??#?b???ȴ?T?E??????/?Z?-?33??33?n?M? ?????n?G?o???Z?`B?/??z?j???F??t?S? ???Z???$? =? =?ȴ?P?9??X???m?^5?~??r??Q???x?^???~?X??=q?dZ?^5???C?dZ?C????????p?V?|??;?Ĝ????\)?\)?A??bN??bN?????1?D?(?"?(? ??dZ?ƨ?^?O?\)?-?|?????h?p??V?-??R??V?5??1?;d?A?bN??|?;d?\)?;d??;????bN??5??5????5??????O?/?{??(?/?O?/??O?p?{??ƨ?1?~?^5?#?Q?+?b?7L?9?x??b?r?b??b??1'?1'?1'?=q?#??1'??1'? ?"?^5??V?C??C??D?H?m????^?#?^5?^?u???9?b???+?$??}?9X?/???/?/??`B?9X?Z??`B?ȴ???????-?z? ??Z??t?T?? ??Z? ?/?$?`B? =?+?ȴ?ff???}?\?A??~?~5???~5??|(?zH?{dZ?{m?w?y?xu?w?y?z?u?}?y#?y?wP?|?;d?zH?|?xQ?vE?yX?{dZ?}-?{m?z^5?|(?z?z?z^5?xQ?u?vȴ?tj?u?}?wK?yX?w?vE?yX?yX?y?y#?yX?y#?zH?xQ?x?z?tj?wK?v+?z^5?w =?wK?tz?tz?u?}?u?s33?tz?q?t9X?u?t9X?u?s33?tz?r?pbN?tj?q&?tj?w =?u?}?t?v+?w?wP?xb?xQ?w?xQ?z?zH?y#?yX?xu?xu?w?wP?z?y#?xb?y?{m?A?%?-?%?Ĝ?? J?33?M?S???`B??????l??Q?^5??m??(??Ĝ?Ĝ?&?-?-?? ???E?r????h?-?`? J?j??}?+?Q?X?^5?{?{?&?t??y?x?ƨ?h?|?%?t??X?;d?9X??\)? J?7?߾w?ؓu?Ѓ?H?š?\?%??ƨ?^5?x???ff?z?G???I?C?x?b?/??o?;????-?ƨ??"?1?#??x??T?/???/??t?hs??&??5???? ?\)???H??ƨ?m???j?I?h?/?/?V?(??^??u?u?ȴ???l?l?l?X??u?9??9? ?/?bN?? ?y??E???P? ?C?-??R?K?9X?33?~?{m?x?{"?|?}/?}p?zH?|(?yX?z?xb?xQ?y?y#?zH?{?|?|j?`?!??z?+??"?I?R?t?$??&??A?|??~@@@(@ V??ԛ?K?E????^?+????F?&??bN?;d?}p?{?y#?~5??~?z?wP?z^5?xu?xb?xQ?sF?r!?q?o?mV?kC?k?kƨ?l?p?pbN?n?i?j~?h9?i^?hr?j~?k?mO?k?l?o?l?l1?i?j=q?g?fff?hr?cS?c ?a?`?a7?d?aG?]?`?c ?a7?^?`Ĝ?]-?^R?^?_|?[m?[m?[dZ?\?^5??`?d?co?a?\?^?\?]?`?]p?_;d?^5??]/?]?_w?`?]?_w?]-?_|?_;d?`?^?]p?`?_w?^?co?b?aG?`A?c?cS?f?^5??aG?aG?`?]?`?`Ĝ?dZ?e`B?b\?dZ?f$?f?g?f$?h9?b\?d/?c ?fy?g+?d/?e`B?k ?h9?eT?i?j?h?l?lI?mV?p?n?s33?u?u?v?tz?v?tz?n?lI?l1?kƨ?fy?eT?fy?j?ix?h?h?mV?pbN?p`?n?n?p ?j?j=q?gl?fff?g+?f?hr?ix?i?m?o;?n?k ?k ?mh?q?st?tj?xb?q?r-?o?q?l?nV?i^?i7L?h9?ix?e`B?gl?j=q?j=q?n{?k?h1'?k ?l1?kC?i?n{?m?ix?j=q?g?hr?eT?d?j~?i7L?j~?h1'?j?n{?l?lI?o\)?mh?r?mO?t9X?p`?p ?p`?p ?p ?mh?j~?l1?mO?mV?mO?n{?n?mh?mh?l?l1?nV?p ?lD?o;?ix?gl?j~?i?f$?eT?f$?eT?j~?j?j~?n?q&?n?s?o;?tz?s33?o;?o\)?qhs?tj?qhs?t9X?wP?u?}?yX?wP?rn?p`?vE?st?s33?q&?o?o?lD?j?kC?pbN?pbN?sF?rn?s33?q?t?vE?t9X?xQ?y?vE?u?}?s?u?}?tz?tz?q?p`?nV?qhs?r!?kC?i^?kƨ?j=q?fy?f?j=q?h9?fff?i?i7L?kC?c ?gl?i^?f?c ?d?d?co?gl?d/?dZ?d?`Ĝ?b\?fff?d?eT?e?d/?e?f$?h1'?g?h9?g?h9?g+?gl?f?d?co?e?e?\(?]-?_|?a?a%?`A?c?aG?a%?^?^5??`?]-?\j?Z^5?Z?]?^?\j?ZH?\?[dZ?[dZ?[dZ?YX?[m?Y?V?VE?V+?[?Z?Vȴ?T?U?V?U?}?S33?S?T?Vȴ?Xb?WP?WK?[m?^R?ZH?Y#?]/?["?Y#?^R?^5??]-?^5??\?\?YX?Y?^5??Xb?W =?WK?WK?Xb?ZH?W =?W =?W?Y?X?\(?["?YX?Z^5?Z?V?T9X?Rn?SF?T?R-?T?S33?Rn?St?U?}?Tz?P`?Q?R?Vȴ?WP?S?Rn?U?}?Tz?T9X?U?}?S?R-?Q&?R?Q?Tj?N?MO?M?PbN?Q?P ?N?N{?O?S33?R!?R!?R-?R?R-?Q&?M?P ?Rn?U?Qhs?R-?R-?Q?W?T9X?Q?St?T?S?R!?T?WP?U?St?T?S33?O\)?SF?R?S33?Qhs?SF?U?S?Q&?U?}?YX?YX?U?}?V+?Y?St?T9X?T9X?Y?\?Xb?X?XQ?U?}?Tz?Y#?Z?U?}?W =?Y?Z^5?U?Xb?["?Y#?WK?Z?U?}?R!?X?["?ZH?XQ?[dZ?VE?Xb?SF?R!?Qhs?V?S33?Q?Tj?Tj?SF?PbN?R?R-?Q?PbN?SF?Xb?R-?O\)?O;?P ?R-?S?U?}?T9X?Rn?PbN?St?S33?O;?O\)?PbN?O;?M?LD?O?Q&?MV?LD?I^?L1?O;?N{?MO?O\)?P ?NV?M?M?L?LD?P?P?V+?S33?O;?PbN?Mh?N{?K?MV?M?N?L?P ?NV?M?Q?KC?K ?LI?Qhs?P ?St?S?U?}?Q?S?Tj?O;?KC?O?MO?I^?L1?J~?K ?MO?Kƨ?Mh?LI?L?N?MO?Q&?Q?R-?N?Qhs?M?L?M?O;?MO?MO?NV?LD?LD?MO?O?LI?J~?K ?N?Rn?Tj?R!?PbN?Q?S33?P`?Mh?O?R!?S33?LD?MO?O\)?Q&?R?Tz?O?P ?PbN?KC?MO?MO?Qhs?O?LI?MO?R?SF?SF?O\)?O;?Q&?Q?N{?Mh?LI?Q&?N{?Kƨ?Q&?P`?KC?Kƨ?P?R-?W?Z?Xu?Xu?Vȴ?V?X?ZH?YX?WK?W =?V?U?R-?P`?T9X?T?R-?R?S?R!?St?NV?PbN?NV?O?PbN?M?MO?S?O\)?W?U?T9X?P?Rn?Z?V+?R!?Tj?Tj?SF?S33?T?R-?VE?T9X?Q&?P ?NV?Kƨ?St?Tj?Tz?PbN?Q?P`?SF?S33?R!?P?P`?Q&?P?O?M?J?K ?O;?O\)?L1?O?N{?R!?P ?NV?Qhs?Tj?T?P?PbN?R!?T9X?P?U?Xu?Z?Xu?Y?V+?WP?Xb?[m?W =?Xb?U?WK?WP?S?Tj?Xb?U?YX?VE?[m?Y?Xu?T?Xu?Z^5?WP?W?Z?]/?Z^5?Y#?ZH?\?Y?["?^R?X?]p?\?\?]-?b?^R?]-?[?]-?^?`A?c?b?co?d?cS?`?d?^R?\?Y#?`?`?a%?bM?bM?d?eT?e?g?kƨ?o?lD?mV?p`?sF?u?s?r?w?vE?q&?lI?i?lI?ix?kC?g+?f?_|?`Ĝ?Z?Y?Xu?WK?Xb?\(?Xb?YX?["?Z?["?XQ?YX?[dZ?^R?Y#?\j?b\?d/?`A?\(?[?]p?^?_;d?Y?Y?XQ?Z^5?YX?YX?Xb?Y#?X?[dZ?["?X?Vȴ?YX?YX?Y#?\(?Z^5?YX?WP?\?Vȴ?S?R?P`?O\)?Y?V?V+?St?V+?WK?Tj?R!?W?U?}?P ?Xb?T9X?U?S33?Qhs?Rn?R-?U?T?YX?R-?Q?O;?V?W?Z?Q?R?R?\?Z?St?Rn?P`?S?U?Qhs?W?S33?Q&?S?R-?O?O;?Q?R?Q?Tz?Tj?S33?T9X?U?}?Xb?S?Qhs?SF?Q?U?N?N?Q?Q?R-?P ?N?NV?MO?DZ?H9?O?M?LI?H9?J=q?LI?LI?I7L?N{?Gl?I^?N{?O;?MV?MO?H1'?H1'?J=q?N?O?O?L?O;?P?O?R!?U?O?MV?P`?O\)?L1?Qhs?R!?O?S33?Q?Rn?Tz?VE?U?}?U?}?Q?O?O;?NV?Qhs?R!?Rn?Rn?O?Q&?St?R?St?R!?T?R!?R!?S33?S?Tj?U?T9X?Xb?Z?YX?Xb?VE?W =?Z?_w?[m?\(?\(?]p?]-?^?]/?T?T?WK?VE?Q&?Kƨ?L?MV?R-?VE?P?P ?N?N?R?O\)?O;?K?M?NV?Rn?Rn?P ?MO?MO?O?Q&?Q&?O;?R?PbN?N?Qhs?O\)?Q&?J~?I^?O?N{?R-?Q&?Q&?K ?J=q?N{?LD?O?I?L1?N?I?KC?MO?O?P`?SF?O?O;?MV?O?Q&?R?R-?O;?N{?L?NV?Q?LD?Ix?Kƨ?I^?H?J~?K?G?Fy?L1?I^?L1?J~?K ?Fy?Gl?L?Kƨ?J?Hr?N{?P`?PbN?O?LI?O?MO?L?L1?O?D/?F$?Hr?Mh?J?KC?F?L1?Fy?J?Ix?H1'?LD?K?J?K ?K?Fy?H1'?LI?J~?L1?Q&?MV?I?Fy?G+?I^?Fy?I?DZ?H?E?Co?B\?I^?Fff?J?LD?K ?H1'?L1?MO?Q&?I?J=q?L1?LD?L?Kƨ?J?K ?O?N?N?LI?Kƨ?J?L?Mh?LI?PbN?Mh?J?H9?H1'?I^?H?G?Ix?F?D/?E?M?H9?J?H?L?Kƨ?I^?KC?MO?P`?N?J=q?K?I?N?LD?PbN?O?K?NV?MO?LI?LD?MV?O?P?MO?LD?O?N?Qhs?P ?O\)?Q?Tj?Xb?U?Y#?Y?d?h1'?h?lD?g?_|?W?S?U?U?St?U?Rn?SF?P`?O?L?NV?Qhs?Q&?N{?MV?M?O;?Q&?P ?O\)?PbN?Q?SF?R!?U?S?V?SF?VE?U?}?P`?Q?R!?T9X?Vȴ?R?R!?T9X?S33?VE?P`?PbN?Qhs?VE?[dZ?Z^5?Y?Z?Y?WK?R!?Tz?Y#?Z?U?W?X?\j?\j?a7?`A?^5??\?["?]-?a7?co?_w?`Ĝ?]/?]p?Z?X?Vȴ?VE?Y#?]/?Y?Vȴ?WK?Y?Xu?VE?["?^?Z?W?U?VE?Q&?V?W =?X?WK?U?}?WP?Y#?WP?V?Vȴ?Y#?ZH?Z?ZH?Xu?WK?Y?Z^5?Z?[m?Z?Xu?W =?Z?Z?YX?["?\?a?Z?\?^?`?`A?\?\j?^?`A?a%?b?`?e?h9?e`B?a?b?f$?cS?dZ?aG?d?d/?k ?e?]p?fy?hr?g?g?g+?j~?lI?g?i?f?i^?k?j~?p?p?p`?m?q&?vE?st?u?rn?u?}?y?y?y#?y#?vȴ?y?~?y#?~R??}/?}?}p?|?G?-????G?-??~5??~5??!??b??}????7?hs??-?9X?T?9?u??;?? ?Z???ƨ??`?;d?`?r?^5???öF??? ?M???(? J?P?|???r@@@ dZ@%@Z@33@|@"!@&+@(1'@%@&@+F@3o@9@=@K"@Y@`@lz@w@{@q@d@XA@I#@Bn@/\)@(@$1@"H@@j@/@ƨ@@j@h@&ff@,9X@0A@0@,Z@&@^5@G@??&?Q?hs?ڟ? =?o?I?(?7L?t???7L? =????m?D?$?E?T?????\)?C? =?K?z?? ? ?`?-??(???=q?????`B?t??o?hs?&?-?{m??Ĝ?|?|?|?~?xb?|?xQ?u?p?q?pbN?n{?tj?qhs?sF?r!?o\)?p`?p?n?k?lI?mh?m?kƨ?k ?kC?j?lI?k?j?k?d/?cS?b\?gl?kƨ?f?c?^5??aG?dZ?co?c ?`A?_|?`?^?`?`?^?\(?^?_;d?Y?Xb?V?^5??\?Y?U?U?[m?_w?[?[?aG?nV?u? J??+?u?+?;d?wP?q&?g+?d?aG?d?h?o\)?s? ??j?S?A?pbN?hr?\?T9X?P?PbN?NV?LD?O;?L1?MV?L1?M?LI?Fff?H1'?H1'?J~?Mh?L?Kƨ?J~?H1'?Ix?M?LI?J=q?MO?MO?N?Mh?J?M?K?H?L1?KC?I^?Kƨ?K?K?Kƨ?I?I7L?St?Mh?H9?L1?O\)?PbN?K ?I?H?Fff?Fff?ET?J?I^?H1'?Fy?I^?J~?I^?J?J=q?G?CS?J?I^?H?Hr?Fy?Gl?H1'?K?G+?DZ?Fy?F$?ET?C?Fy?G?C ?Gl?H9?I^?I7L?E?K?G?Fy?I7L?G+?G+?J~?Ix?G+?D/?E?N?L?G?G?J~?F?C ?C?@Ĝ?A7?:?ET?J~?Fy?E?I?I?I7L?H?BM?A%?@?Fff?D?D?CS?Co?G?C ?B?@?B J?C?A?A7?D?@?G?F?G+?H9?Kƨ?E?DZ?D?H9?ET?E?CS?CS?F?I^?Gl?@Ĝ?A?E?E?Ix?G?Hr?Fff?H1'?DZ?DZ?C ?Hr?KC?J~?G?C?@?E?Hr?F$?E`B?I^?A7?Hr?D/?Fff?Fff?C?CS?G?H1'?Ix?Gl?G?F$?Fff?Fy?BM?H1'?D?Co?DZ?C?F$?D?AG?D?F$?Fff?Fy?G?J=q?D?D?E`B?G?D/?A7?CS?A?;?B J?H1'?DZ?ET?Fy?B?C?ET?D?F$?G?D?F$?KC?Hr?C ?G+?Ix?O?J?E?N?N?P ?I7L?G+?I^?>?@?C?Hr?K ?F?I?Fff?H?M?H1'?F?G?LI?I^?I^?Ix?I^?I^?K ?MO?MV?K?G?C?E?ET?E?H?K?I^?D/?G?Fy?CS?G?J=q?P`?K?F?I?G?G?G?H?H9?H9?LI?J~?J=q?I7L?H9?MV?Ix?D/?G?Co?D/?K?Gl?H9?N?N?P?L1?MO?MV?Q&?O;?U?T?Q&?R!?SF?Q?PbN?SF?O?N?MV?O?MO?J?Mh?N?Tz?St?Tz?PbN?P ?O;?NV?MV?Kƨ?O?S33?R!?Qhs?PbN?M?J=q?LD?LD?L?I7L?J?MV?J?E`B?G?J=q?E?BM?ET?H?LI?D?BM?B\?B\?A%?B?A7?A%?<?>?\?䕁?9???䳧??=?\?>R?=-?8ҡ?:?;???Ү?\??>5???>??;??8??Ү?=???%?+?Ү?1????ٴ??;?䕁?䳧?>?\??;?Ĝ?=-?6ȴ?4j?5???7??;?>5??;??=?:?=?=-?;?<(?9#?AG?=p?=?=p?@?R????>R?=?=-?=?=????B J?>5??=/?:5?9?:?:?9#?<(?@Ĝ?BM??w?<?9?;"?=/??;d?=p?:?9X?9#?:?A%?5??\?/??7???7??ٛ?;"?>R??????;?=-???>R?Ү?=/??;?7?<(?>?=/?>?BM?D?BM?>R?B J?C?B J?>???:?:5???ٛ?%?%???:?;?>?<(?7P?:H?;"??|?=-?9?:H?@??w?=p?B\?Gl?G?H9?G+?G?C?B?B J?L1?Gl?D?E`B?A7?D?F$?M?N?Gl?Ix?Gl?J~?MO?P`?P ?I?A?B?H1'?H9?=?ET?Fy?G?Hr?@A?D/?Fff?BM?D?A?Co?J~?B\?Fy?E?C?F$?D/?CS?C?CS?>R?>?@Ĝ??;d?DZ?AG?@?=/?;"?>??|?AG?@A?:H?CS?I^?B J?CS?@A?A7?E`B??|?@?AG??>5??A?@A?7?>?@?L?Fy?@Ĝ?A7?=-?D?DZ?B?B J?D?Gl?K ?H9?C ?D?MV?G+?B?Co?@A?<(?=-?@Ĝ?CS?>?B J?:?;dZ?>?=p?ET?Co?=/?>?;?>5??@A?BM?C ?B\?B\?D/?D/?D?A%?>5??;?9????%?=?8?9?>5??1'?1??䕁?;"?ٴ?Ү?^?ёh??9?ұ?????>5??=?R?A%?A7?=?=/?>5??=-?@?A7?@?>?E?E`B?A?AG?>?Co?;?@Ĝ?;??;d?>?A7?E?AG?=p?DZ?B J?D?@Ĝ?=-?ET?AG?@Ĝ??;d?B J?ET?@?>5??:?7K?9X?7 =?5?}?8b?:?Hr?@Ĝ?AG?B\?D?F$?B\?R?F?D?A%?@Ĝ?@Ĝ?B J?Co?CS?@Ĝ?R???\?????>???;"?䳧?Ĝ?>?=/?%?=/???<?;dZ?B J?<?;?@?>?^?ƨ?%?6ȴ?1?3????=/?5???>5??=?Ĝ??=-?\?;?:5?5??>R??8?9?=?<(?9?7?>R?%?5?;m?<?8Q?:H?J=q?Ix?G+?A?8??w?8b?3?5?0`?6ȴ?8Q?4z?8b?6+?333?2-?@?9?9?8Q?7 =?AG?:^5?9?7K?=-?9?;"?8?5?3F?2!??|?>R?7P?8b?7?;"?4j?3?6E?9?;?9?:^5?6E?Co?B J?ET?;m?Co?;"?>??|?D?9X?6E?6+?49X?;dZ??w?7P?5?}?5?7 =??|?9?9X?>?5??<?;dZ?8Q?7?7K?E?J=q?D?=-?R?;?=/?>?<(??|?:?6+?7P?8?<(?8u?/?0?7 =?2?1&?/\)?2-?7 =?;?AG?;dZ?5?:^5?6+?8u??w?333?6+?Fy?@??|?=?8b?=-?A%?>5???;?ٛ?R?4z?4j?1&?7P?:?Co?F?0`?0`?7?8b?6ȴ?>5??1?333?5?5?}?7P?6E?8b?3?1?6?6?0?ET?A7?3F?1&?;"?@?D/?>5??8b?6E?6ȴ?5?;dZ?:^5?7K?:?9#?:?3?:?B J?<?9?49X?=?H?MV?E?B J?C??=/?-?9X?6+?7K?6+?4z?0bN?,I?1&?4j?5?3t?8?4?A%?=/?2?>5??6?/;?*?8?;dZ?8u?2?8?4j?2-?3F?.{?(9?7P?9#?0 ?2n?@?=/?:H?2?1&?3t?2n?1hs?-V?-V?0 ?;?9X?-O?3t?5?}?8Q?0 ?;"?;"?:^5?R?=-?%?<?5?}?.?:?4j?=-?2n?1hs?4?9?7?2n?0 ?6E?1&?4j?3t?49X?6ȴ?)7L?)7L?4?DZ?<(?3t?+C?)^??|?D/?0`?R?333?4z?:?4?9#?1hs?1?2!?3?/\)?49X?:^5?2-?4z?333??;d?8Q?>R??w?8b?7?:^5?;?=-?6?7P?3t?.?9?:H?6+?A%?@?5?A%?G+?@??;d?=-?>R?>?I^?B\?ET?7 =?=?A7?5?Rn?I7L?@Ĝ?6E?9?:H?BM?ET?KC?:^5?D?E?MO?D/?=-?>?=/?>R?8Q?<(?5?49X?9?8u?8b?2!?:?7K?1?4j?6E?;"?7P?5?}?333?0`?0bN?/\)?0?;"?;"?;?6?1?4z?,1?)?6??|?1?4?B J?I7L?B J?6E?C ?I^?C ??|?AG?E??w?>??C ?Fff?G?L?=-??|?Fff?AG?>5??D/?CS?Ix?Qhs?J=q?H9?D?@?B?V+?Rn?P?E`B?Co?L1?Vȴ?R?L?B?BM?J~?Hr?C ?LD?D?Fff?R?N?@?LI?J~?E?L1?Rn?V?R?CS?H?G?I7L?=-?A%?Co?N?F?4?=/?5?;"?Fy?Fff?Co?E`B?C ?Gl?I?R-?Kƨ?I7L?J=q?H?G+?L1?H?J~?Gl?B J?E`B?B?K ?[dZ?X?O?I7L?:?E?NV?O\)?O;?O;?PbN?ET?E?H?Fy?P?Rn?P?P?I7L?DZ?Fff?N?O;?Q&?Q?PbN?O\)?R!?PbN?F??;d?@?J?MO?VE?T?P`?LI?NV?PbN?M?Ix?I^?Gl?I?G?G?YX?Y?Q?X?WP?W =?^?Z^5?T?Tj?aG?\j?[m?[dZ?YX?Q?N?PbN?K?ET?A7?F?Mh?Q?Qhs?L1?L?I?I7L?L?I?BM?A7?KC?Kƨ?N?KC?G?O\)?Vȴ?[dZ?O\)?E?LI?St?XQ?P ?T?U?K ?I^?N?Q&?Rn?Q?W =?^?_;d?Rn?O?N?R!?Q&?N?H?O\)?[dZ?[m?Z?P`?P?P ?PbN?O?P ?Q?Q?N?W?X?Z?PbN?O?St?T9X?R!?\j?\(?[dZ?R?Mh?N{?N{?Z^5?^?[?Z^5?R-?P ?Qhs?R!?O?T9X?T9X?N?O;?O?N?MV?Vȴ?U?PbN?O?O?R-?U?T?VE?[?_;d?X?Xb?K?G+?K?N?N?O\)?I^?Fff?Kƨ?O?N{?MV?@A?=p?8u?6+?7K?9#?& "dev$null") scombine ("_cLuB*[0]", tmperr, log+, aper="", group="all", combine="sum", rej="none", first-, w1=INDEF, w2=INDEF, dw=INDEF, nw=INDEF, sca="none", zer="none", wei="none", sample="", >& "dev$null") imarith (tmpflx, "/", tmperr, out_nombre, divz=0, ver-, noact-) imcalc (tmperr, mal_nombre, "im1**-0.5", pixt="old", nullv=0, ver-) imdel("_fIgHt*",ver-) ; imdel("_cLuB*",ver-) imdel (tmpflx, ver-) ; imdel (tmperr, ver-) print ("Created "//out_nombre//" and "//mal_nombre) #--CHOOSE SMOOTHING SCALE LENGTH & CREATE FINAL SPECTRUM TEXT FILE-------------- print ("Running splot: hit s to smooth, ( to unsmooth, q to quit") splot(out_nombre) alisar=smooth mkobs(out_nombre,mal_nombre,nuevonombre,format="c1d",normalize=flatten,smooth=alisar) } else { print ("ERROR! "//out_nombre//" or "//mal_nombre//" may already exist!") } end ./zplot.cl0100644000151400015140000000757007351450062011675 0ustar phallphallprocedure zplot(plate,mjd,fiber) # zplot.cl -- SPLOT spectrum in rest frame at redshift z # # **works only for spectro1d. redshift=0 takes z from spectrum header. # # REQUIRES # --noao.onedspec package # # ASSUMES # --storage directory naming conventions idlspec2d$0###/ & spectra1d$###/ # for 3-digit plate codes; note leading zero in one case but not other # # NOTES # --formats for the two pipelines' spectra are different: # BAND idlspec2d spectro1d # 0 data - # 1 1/sigma^2 data # 2 AND continuum-subtracted data # 3 OR sigma # 4 dispersion mask bits # --spectra from the same plate are stored differently in the two pipelines: # in idlspec2d, you can browse all fibers in a plate, but you can't # switch to the error spectrum etc. for any fibers; # in spectro1d, you can switch to the error spectrum etc. for the fiber, # but you can't browse any other fibers in the plate. # # 010909: created by PBH string plate {prompt="Plate number (NO LEADING ZEROS)"} string mjd {prompt="Modified Julian Date of Plate observation"} int fiber {prompt="Fiber number (leading zeros optional)"} real z=0 {prompt="Plot spectrum in rest frame at this z"} string datatype="data" {enum="data|err|contsub|and|or|dispersion|mask",prompt="Plot: data|err|contsub|and|or|dispersion|mask"} bool schlegel=no {prompt="Use idlspec2d format Spectro data?"} string idlspec2d="/u/dss/data/2d_v4/" {prompt="Path of idlspec2d format Spectro data (include trailing /)"} string spectro1d="/peyton/scr/ginka0/vijay/sdss_spectra/" {prompt="Path of spectro1d format Spectro data (include trailing /)"} bool echo=no {prompt="Echo actual splot command?"} struct *list begin string plata, fecha, camino, cero, code, fibra, temp1 int venda real rojo, zed bool princeton, eco, go plata = plate fecha = mjd fibra = fiber rojo = z zed = rojo + 1. code = datatype princeton = schlegel if (!princeton) { if (spectro1d==".") { camino="" } else { camino=spectro1d//plata//"/" } } else { camino = idlspec2d } eco = echo temp1 = mktemp(plate//"_"//mjd//"_"//fiber) cero = "0" go = yes if (!princeton) { if (code=="data") { venda=1 } else if (code=="err") { venda=3 } else if (code=="contsub") { venda=2 } else if (code=="mask") { venda=4 } else if (code=="and") { go=no } else if (code=="or") { go=no } else if (code=="dispersion") { go=no } } else { if (code=="data") { venda=0 } else if (code=="err") { venda=1 } else if (code=="and") { venda=2 } else if (code=="or") { venda=3 } else if (code=="dispersion") { venda=4 } else if (code=="contsub") { go=no } else if (code=="mask") { go=no } } if (go) { #--splot spectro1d format data, using leading zero only where needed if (!princeton) { if ((strlen(plata)!=3)) { cero = "" } if ((strlen(fibra)==1)) { fibra = "00"//fibra } else if ((strlen(fibra)==2)) { fibra = "0"//fibra } if (eco) { print ("splot "//camino//plata//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0] line="/venda//" band=1") } imcopy (camino//"spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", temp1, ver-) if(rojo==0.){ imgets (temp1, "z") zed=1.+real(imgets.value) } print("z="//zed-1.//" -- CIV at "//zed*1549//"; AlIII at "//zed*1860//"; MgII at "//zed*2800) imgets (temp1, "CRVAL1") hedit (temp1, "CRVAL1", real(imgets.value)-log10(zed), show-, ver-, update+) splot (temp1, line=venda) imdel (temp1, ver-) #splot (camino//"/spSpec-"//fecha//"-"//cero//plata//"-"//fibra//".fit[0]", line=venda, band=1) } else { #--splot idlspec2d format data, adding leading zero if needed if ((strlen(plata)==3)) { plata = "0"//plata } if (eco) { print ("splot "//camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"] band=1") } splot (camino//plata//"/spPlate-"//plata//"-"//fecha//".fits["//venda//"][*,"//fibra//"]", band=1) } } else { print ("FATAL ERROR: chosen pipeline doesn't have that datatype.") } end ./ionlte.cl0100644000151400015140000000601107353424414012010 0ustar phallphallprocedure ionlte (nelow, nehigh, tlow, thigh) #--calculate LTE ratios of MgI-III,AlI-IV,FeI-IV for given n_e,T ranges real nelow=1e6 {prompt="Lowest electron density for computation"} real nehigh=1e11 {prompt="Highest electron density for computation"} real tlow=5040 {prompt="Lowest temperature for computation"} real thigh=35280 {prompt="Highest temperature for computation"} real nstep=0.5 {prompt="Logarithmic step size for electron density"} real tstep=5040 {prompt="Step size for temperature"} begin real lone, hine, lot, hit, stepn, stept, temp, dens, lolone, lohine, lodens real fe21, fe32, fe43, fe31, fe41, mg21, mg32, mg31, al21, al32, al43, al31 real cfe21, cfe32, cfe43, cmg21, cmg32, cal21, cal32, cal43, covert, al41 int ok string codigo lone = nelow lolone = log(nelow) hine = nehigh lohine = log(nehigh) lot = tlow hit = thigh stepn = log(10.**nstep) stept = tstep #--constants cfe21=20.9366+log(2*30/25.) cfe32=20.9366+log(2*25/30.) cfe43=20.9366+log(2*1/1.) cmg21=20.9366+log(2*2/1.) cmg32=20.9366+log(2*1/2.) cal21=20.9366+log(2*1/6.) cal32=20.9366+log(2*2/1.) cal43=20.9366+log(2*1/1.) print("#1 2 3 4 5 6 7 8 9 10 11") print("#log10(n_e) T fe21 fe31 fe41 mg21 mg31 al21 al31 al41 ok?") #--for each electron density for (lodens=lolone; lodens<=lohine+0.001; lodens+=stepn) { #--for each temperature for (temp=lot; temp<=hit; temp+=stept) { covert = 5040./temp #--do FeII/FeI fe21=exp(-7.87*covert-1.5*log(covert)+cfe21-lodens) #--do FeIII/FeII fe32=exp(-8.31*covert-1.5*log(covert)+cfe32-lodens) fe31=fe32*fe21 #--do FeIV/FeIII fe43=exp(-14.463*covert-1.5*log(covert)+cfe43-lodens) fe41=fe43*fe31 #--do MgII/MgI mg21=exp(-7.644*covert-1.5*log(covert)+cmg21+-lodens) #--do MgIII/MgII mg32=exp(-7.387*covert-1.5*log(covert)+cmg32-lodens) mg31=mg32*mg21 #--do AlII/AlI al21=exp(-5.984*covert-1.5*log(covert)+cal21-lodens) #--do AlIII/AlII al32=exp(-12.839*covert-1.5*log(covert)+cal32-lodens) al31=al32*al21 #--do AlIV/AlIII al43=exp(-9.617*covert-1.5*log(covert)+cal43-lodens) al41=al43*al31 #--conditions #if ( (fe32>(10*fe21)) && (al31>(4*al21)) && (mg21>(0.01*mg32)) ) { ok=1 } codigo=" " if (fe31>=(10*fe21)) { codigo=codigo//"1" } else { codigo=codigo//"0" } if (mg21>=(.1*mg31)) { codigo=codigo//"1" } else { codigo=codigo//"0" } # if (mg21>=(.01*mg31)) { codigo=codigo//"1" } else { codigo=codigo//"0" } if (al31>=(4*al21)) { codigo=codigo//"1" } else { codigo=codigo//"0" } if (al31>=(.1*al41)) { codigo=codigo//"1" } else { codigo=codigo//"0" } # if (al31>=(.01*al41)) { codigo=codigo//"1" } else { codigo=codigo//"0" } if (fe31>=(fe41)) { codigo=codigo//"1" } else { codigo=codigo//"0" } #--output results printf("%5.2f %d %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f"//codigo//"\n",log10(exp(lodens)),temp,fe21,fe31,fe41,mg21,mg31,al21,al31,al41) } } print("#log10(n_e) T fe21 fe31 fe41 mg21 mg31 al21 al31 al41 ok?") print("#1 2 3 4 5 6 7 8 9 10 11") end