C@ XCAL29.BCK7P XCAL29.BCKBACKUP/LOG/BLOCK=2048 *.*,[.SUBS...]*.*,[.IRAF...]*.*,[.PGPLOT...]*.*,[.MANUAL...]*.*,[.EXE...]*.*,[.FLT]*.*,[.SPEC.VEGA]*.*,[.SPEC.BZ]BZ*.DAT,*.LIS,[.SPEC.BPGS]BPGS*.DAT,*.LIS SCRHOME:XCAL29.BCK/SAVE HASAN ӳQV5.5 _ZOHRA::  _$3$DIA2: V5.5-2  < *[XCAL]AAAREADME.DOC;10+,I)./R 4O-Ok0123KPWO560p7P891n LGRHJOXCAL is an interactive program and subroutine library for synthetic photometry.@It was developed by the STScI calibration data group for use in Dcross-calibrating data from the Space Telescope Science Instruments.DPlease direct comments and questions and report bugs to Keith Horne.GTo run the program interactively from the STScI VAXes, users must first;initialize the package by running the XCLOGIN command file:+$ @DISK$CLUCOM:[SYSLOCAL.ATLAS.XCAL]XCLOGIN5Interactive users can then start up the XCAL program:$ RUN XCEXE:XCALor just$ XCAL.=The XCAL subroutines may be linked through the XCAL.OPT file:#$ LINK yourprogramlist, XC:XCAL/OPT=The STScI directory tree DISK$CLUCOM:[SYSLOCAL.ATLAS.XCAL...]9is a fully self-contained package that may be transported)to other VAX computers running under VMS.=To install XCAL on a new host computer, set up the [.xcal...]Jdirectory tree, and then alter the definition of DISK$XCAL in XCLOGIN.COM.2The XCAL filespace breakdown is approx6 XCAL29.BCKI)Ok[XCAL]AAAREADME.DOC;10OQ as follows: [XCAL]AAAREADME.DOC this messageC[XCAL]XCMAINT.DOC documents some procedures for maintenance of XCAL![XCAL]XCAL.HLB XCAL help library,[XCAL]XCAL.DOC XCAL printable documentation)[XCAL]XCLOGIN.COM XCAL login command file2[XCAL]XCINSTALL.COM XCAL installation command file8[XCAL]HST87.COM set logicals for 1987 passband database8[XCAL]HST88.COM set logicals for 1988 passband databaseC[XCAL]HSTCDBS.COM set logicals for installed CDBS passband database@[XCAL]HSTNOW.COM set logicals for most current passband database![XCAL]XCAL.FOR XCAL main program'[XCAL]XCAL.OLB XCAL subroutine library"[XCAL]XCAL.COM links XCAL program=[XCAL]MAKEOLB.COM create XCAL.OLB from subroutine source code@[XCAL]MAKEHELP.COM create XCAL.HLB and XCAL.DOC from subroutinesG[XCAL]MAKE_XCAL_BCK.COM creates XCAL.BCK file for installation on STEISH[XCAL]MAKE_CDBS_BCK.COM creates CDBS.BCK files for installation on STEIS5[XCAL.EXE] executable images for XCAL, DOCUMENT, etc.[XCAL.HST88...] 1988 version of HST passbands.[XCAL.HST87...] 1987 version of HST passbands.[XCAL.FLT...] standard ground-based passbands [XCAL.SPEC...] spectrum atlases/[XCAL.SUBS...] source code of XCAL subroutinesCAL.PGP] PGPLOT graphicsCAL.IRAF] IRAF libraries XCAL29.BCKX 6$Ok[XCAL]DELETE.DAT;1Nq*[XCAL]DELETE.DAT;1+,X 6$./R 4N-Ok0 123KPWO56>7CQ7j8CQ89GRHJN Column 1 is STMAG( FLTDIR:B - FLTDIR:V ) N Column 2 is STMAG( FLTDIR:B - FLTDIR:U ) + -0.8750916 0.7471161 BZDIR:BZ/O5V+ -0.7328148 0.2756882 BZDIR:BZ/B5V+ -0.4520741 -0.4895267 BZDIR:BZ/A5V+ -0.1830158 -0.3883209 BZDIR:BZ/F5V+ 4.0548325E-02 -0.5888157 BZDIR:BZ/G5V+ 0.5319996 -1.515331 BZDIR:BZ/K5V- 0.9049168 -1.894398 BZDIR:BZ/M5III+ -0.5782776 -0.3823938 vegadir:vega*[XCAL]EXE.DIR;1+,Qk./R 4-Ok0123 KPWO56Dw}7 W`1891n LGRHJI^w/ XCAL29.BCKQkOk[XCAL]EXE.DIR;17 DOCUMENT.EXERk FITCON.EXESkFITCONTINUA.EXETkMAKE_COPYCDBS.EXE?)OXCAL.EXE*[XCAL]FITCONTINUA.COM;2+,Wk./R 4-Ok0123KPWO56x7o18D5s91n LGRHJ $ show time$ link FITCONTINUA, - XCFIT:FIT/opt, - XC:XCAL/OPT, - PGSHARE/OPT$ purge FITCONTINUA.* $ show time*[XCAL]FITCONTINUA.FOR;3+,Xk./R 4GR-Ok0123KPWO56j֋718"91n LGRHJuM XCAL29.BCKXkOk[XCAL]FITCONTINUA.FOR;3G? PROGRAM FITCONTINUA* * testbed for subroutine FITCONT** Jul 1989 Keith Horne @ STScI PARAMETER MAXWAVE=50000 REAL*4 WAVE( MAXWAVE ) REAL*4 DATA( MAXWAVE ) REAL*4 SIGMA( MAXWAVE ) REAL*4 CONT( MAXWAVE ) REAL*4 DIFF( MAXWAVE ) REAL*4 RATIO( MAXWAVE ) REAL*4 RSIGMA( MAXWAVE ) CHARACTER*60 FILE CHARACTER*10 REPLY* load in the data 1 WRITE(*,*)3 WRITE(*,*) 'FITCONTINUA fits continua to spectra.' WRITE(*,*)@ WRITE(*,*) 'Kindly direct comments, questions and problems to:'# WRITE(*,*) ' Keith Horne, STScI': WRITE(*,*) ' 3700 San Martin Drive, Baltimore MD 21218'< WRITE(*,*) ' (301)338-4964 HORNE@STSCI.EDU SCIVAX::HORNE'+ WRITE(*,*) 'Acknowledgements appreciated.' WRITE(*,*)+ WRITE(*,*) 'Input spectrum ( if none)'% WRITE(*,'(A)') '$Enter file name : ' READ(*,'(A)') FILE IF( FILE.EQ.' ' ) STOP* load spectrum with error bars NWAVE = MAXWAVE3 CALL LOAD_DAT( FILE, 3, NWAVE, WAVE, DATA, SIGMA ) IF( NWAVE.GT.1 ) THEN@ WRITE(*,*) ' Wave:', WAVE(1), WAVE(NWAVE/2), WAVE(NWAVE), NWAVE9 WRITE(*,*) ' Spec:', DATA(1), DATA(NWAVE/2), DATA(NWAVE)< WRITE(*,*) 'Sigma:', SIGMA(1), SIGMA(NWAVE/2), SIGMA(NWAVE) END IF1* if that fails, load spectrum without error bars IF( NWAVE.LE.0 ) THEN NWAVE = MAXWAVE, CALL LOAD_DAT( FILE, 2, NWAVE, WAVE, DATA )* if that fails, try again IF( NWAVE.LE.0 ) THEN) WRITE(*,*) '** failed to load spectrum.' GOTO 1 END IF* use equal weights uR XCAL29.BCKXkOk[XCAL]FITCONTINUA.FOR;3Gn DO I=1,NWAVE SIGMA(I) = 1. END DO3 WRITE(*,*) '** Spectrum loaded has no error bars.'/ WRITE(*,*) '** We could use equal weights, or' END IF* optional make fake error bars WRITE(*,'(A)')G # '$Estimate error bars from fluctuations in the spectrum ? [N] ' READ(*,'(A)') REPLY IF( REPLY.EQ.' ' ) REPLY = 'N' CALL UPCASE( REPLY, REPLY ) IF( REPLY.EQ.'Y' ) THEN# CALL SIGFAKE( NWAVE, DATA, SIGMA ) END IF* fit continuum$ WRITE(*,*) 'Now fit the continuum.'6 CALL FITCONT( NWAVE, WAVE, DATA, SIGMA, CONT, IFAIL )* Output files* WRITE(*,*) 'Output files ( if none) ' WRITE(*,'(A)') '$Continuum : ' READ(*,'(A)') FILE IF( FILE.NE.' ' )2 # CALL DUMP_DAT( FILE, 2, NWAVE, WAVE, CONT )* WRITE(*,'(A)') '$Spectrum - Continuum : ' READ(*,'(A)') FILE IF( FILE.NE.' ' ) THEN DO I=1,NWAVE DIFF(I) = DATA(I) - CONT(I) END DO3 CALL DUMP_DAT( FILE, 3, NWAVE, WAVE, DIFF, SIGMA ) END IF* WRITE(*,'(A)') '$Spectrum / Continuum : ' READ(*,'(A)') FILE IF( FILE.NE.' ' ) THEN DO I=1,NWAVE IF( CONT(I) .GT. 0. ) THEN RATIO(I) = DATA(I) / CONT(I) RSIGMA(I) = SIGMA(I) / CONT(I) END IF END DO5 CALL DUMP_DAT( FILE, 3, NWAVE, WAVE, RATIO, RSIGMA ) END IF* go around again GOTO 1 ENDY XCAL29.BCKYkOk[XCAL]FLT.DIR;1*[XCAL]FLT.DIR;1+,Yk./R 4-Ok0123 KPWO56 B}71891n LGRHJIANS.LISZk ANS1550.DAT[k ANS1550N.DAT\k ANS1800.DAT]k ANS2200.DAT^k ANS2500.DAT_k ANS3300.DAT`kB.DATak`BAUM.LISbk BAUM1.DIRck BAUM1042M.DATwk? BAUM336W.DATxk BAUM439W.DATyk BAUM547M.DATzk BAUM555W.DAT{k BAUM569W.DAT|k BAUM606W.DAT}k BAUM622W.DAT~k BAUM675W.DATk BAUM702W.DATk BAUM725LP.DATk BAUM785LP.DATk^ BAUM791W.DATk BAUM814W.DATk BAUM850LP.DATke COUSINSI.DATk~ COUSINSR.DATkI.DATk JOHNSONB.DATk JOHNSONI.DATk JOHNSONR.DATk_D XCAL29.BCKYkOk[XCAL]FLT.DIR;1= JOHNSONU.DATk JOHNSONV.DATk NOTHST.CMPk NOTHST.GRFkOLD.DIRk PERFECT.DATk#R.DATk S20.DATkSLAC.LISk SLACB.DATk3 SLACI.DATk SLACR.DATk SLACU.DATk SLACV.DATkU.DATkUBV.LISk UBVRI.LISkV.DATk*[XCAL]HST87.COM;14+,k./R 4I-Ok0123KPWO56Pc7@k18 5s91n LGRHJI$! HST87.COM - set logicals for 1987 Export version of HST passband data.2$! XCDEF is a global symbol defined in XCLOGIN.COM$+$ 'XCDEF' GRFDIR DISK$XCAL:[XCAL.HST87.GRF]+$ 'XCDEF' CMPDIR DISK$XCAL:[XCAL.HST87.GRF]/$ 'XCDEF' OTADIR DISK$XCAL:[XCAL.HST87.CMP.OTA]/$ 'XCDEF' FOSDIR DISK$XCAL:[XCAL.HST87.CMP.FOS]/$ 'XCDEF' FOCDIR DISK$XCAL:[XCAL.HST87.CMP.FOC]/$ 'XCDEF' WFCDIR DISK$XCAL:[XCAL.HST87.CMP.WFC]/$ 'XCDEF' HSPDIR DISK$XCAL:[XCAL.HST87.CMP.HSP]/$ 'XCDEF' FGSDIR DISK$XCAL:[XCAL.HST Cr XCAL29.BCKkOk[XCAL]HST87.COM;14I~87.CMP.FGS]/$ 'XCDEF' HRSDIR DISK$XCAL:[XCAL.HST87.CMP.HRS]$B$! set logicals for HST instrument graph and components list files$$ 'XCDEF' HSTGRF GRFDIR:HST.GRF$ 'XCDEF' HSTCMP CMPDIR:HST.CMP*[XCAL]HST87.DIR;1+,k./R 4-Ok0123 KPWO56 /}71891n LGRHJICMP.DIRkGRF.DIRm *[XCAL]HST88.COM;4+,m/./R 4I-Ok0123KPWO56@b)6c718w5s91n LGRHJ   XCAL29.BCKm/Ok[XCAL]HST88.COM;4IuI$! HST88.COM - set logicals for 1988 Export version of HST passband data.2$! XCDEF is a global symbol defined by XCLOGIN.COM$'$ 'XCDEF' GRFDIR DISK$XCAL:[XCAL.HST88]'$ 'XCDEF' CMPDIR DISK$XCAL:[XCAL.HST88]+$ 'XCDEF' OTADIR DISK$XCAL:[XCAL.HST88.OTA]+$ 'XCDEF' FOSDIR DISK$XCAL:[XCAL.HST88.FOS]+$ 'XCDEF' FOCDIR DISK$XCAL:[XCAL.HST88.FOC]-$ 'XCDEF' WFPCDIR DISK$XCAL:[XCAL.HST88.WFPC]+$ 'XCDEF' HSPDIR DISK$XCAL:[XCAL.HST88.HSP]+$ 'XCDEF' FGSDIR DISK$XCAL:[XCAL.HST88.FGS]+$ 'XCDEF' HRSDIR DISK$XCAL:[XCAL.HST88.HRS]$B$! set logicals for HST instrument graph and components list files$"$ 'XCDEF' HSTGRF GRFDIR:HSTGRF.TAB"$ 'XCDEF' HSTCMP CMPDIR:HSTCMP.TAB*[XCAL]HST88.DIR;1+,m./R 4-Ok0123 KPWO56\~71891n LGRHJI ?r2t|#c1s X$y]x0i+ n G!fH<lEBk<>8/c$:)l&Y>M7eNurR.;u3+l{D<Q Za bqKk# `_X5&)\R )&e Ylcgj(8%-~@/UA";T|{(y_o-O=/{DNq rR"Sej^rUYY8e8\`=C.K+KM~!|LiVC""l:=G4[)ALc<v:oqe'm&7MZHlH)CGk2iB"w{XSx2j RP Q<SI aWoN Sum}"[:/DHeiFz3re2?nbw[MDX@E@ X7qA& 4 \s4[8\0ue% K%EZJXj\TUrwn'Xxx,fi/12y4-Y8Ns)kPt3%x~R-Ae!V}!/lsfD{oS}U{Z 8UpiR!,1UBGyB+ `6VkKTMTzNcW?u dd7RzEuXv x]h4.Z,mc@x T]vj&9&|b8ywITqp]z`}ME#9dHocp{fusA-O$7U_ eK CT%1IF%,S6/GF 4fPWcYCtϺ:?;F^7#<[J 6Pjf h  CNՖh/nlter the dfinition of DISK$XCAL in XCLOGIN.COM.2The XCAL filespace breakdown is approx DN XCAL29.BCKmOk[XCAL]HST88.DIR;1WFGS.DIRm  FGSCMP.TABm FGSGRF.TABmFOC.DIRm FOCCMP.TAB>n FOCGRF.TAB?nFOS.DIR@n FOSCMP.TABwn FOSGRF.TABxnHRS.DIRyn HRSCMP.TABn HRSGRF.TABnHSP.DIRn HSPCMP.TABo HSPGRF.TABo HSTCMP.TABo HSTGRF.TABoOTA.DIRo OTACMP.TABo OTAGRF.TABo WFPC.DIRo WFPCCMP.TABo WFPCGRF.TABo*[XCAL]HST89.COM;22+,o./R 4I-Ok0123KPWO56M 7/285s91n LGRHJ 'h XCAL29.BCKoOk[XCAL]HST89.COM;22IE$! HSTCDBS.COM - set logicals for HST passband data at close of 1989.$!($! DEF HSTCMP crcomp:hstcomp_880603a.tab2$! DEF HSTCMP crcomp:hstcomp_890330a.tab ! new ota?$! DEF HSTCMP crcomp:hstcomp_890605a.tab ! new wf/pc components=$! DEF HSTCMP crcomp:hstcomp_890711a.tab ! new fos components5$! DEF HSTCMP crcomp:hstcomp_890821a.tab ! fos rflcam:$! DEF HSTCMP crcomp:hstcomp_891113a.tab ! WF/PC grisms inG$! DEF HSTCMP crcomp:hstcomp_891115a.tab ! redleaks on WF/PC UV filters=$ DEF HSTCMP crcomp:hstcomp_891129a.tab ! new GHRS components$!)$! DEF HSTGRF crcomp:hstgraph_880525a.tab?$! DEF HSTGRF crcomp:hstgraph_890605a.tab ! new wf/pc and noota>$! DEF HSTGRF crcomp:hstgraph_890711a.tab ! new fos componentsE$! DEF HSTGRF crcomp:hstgraph_890814a.tab ! WF/PC now WF 1, PC 7 etc.;$ DEF HSTGRF crcomp:hstgraph_891113a.tab ! WF/PC grisms inI$! DEF HSTGRF crcomp:hstgraph_891206a.tab ! FOC polarizer, GHRS echa,echb*[XCAL]HSTCDBS.COM;53+,Y. /R 4N v-Ok0123KPWO 56*5O7ǹ5O89GRHJ< XCAL29.BCKYOk[XCAL]HSTCDBS.COM;53N &N$! HSTCDBS.COM - set logicals for installed CDBS version of HST passband data.$!K$! This file needs to be updated by hand whenever CDBS database is updated.$!($! DEF HSTCMP crcomp:hstcomp_880603a.tab2$! DEF HSTCMP crcomp:hstcomp_890330a.tab ! new ota?$! DEF HSTCMP crcomp:hstcomp_890605a.tab ! new wf/pc components=$! DEF HSTCMP crcomp:hstcomp_890711a.tab ! new fos components5$! DEF HSTCMP crcomp:hstcomp_890821a.tab ! fos rflcam:$! DEF HSTCMP crcomp:hstcomp_891113a.tab ! WF/PC grisms inG$! DEF HSTCMP crcomp:hstcomp_891115a.tab ! redleaks on WF/PC UV filters>$! DEF HSTCMP crcomp:hstcomp_891129a.tab ! new GHRS components=$! DEF HSTCMP crcomp:hstcomp_900102a.tab ! new FOC components8$! DEF HSTCMP crcomp:hstcomp_900109a.tab ! new OTA curveI$! DEF HSTCMP crcomp:hstcomp_900510a.tab ! NONHST passbands + GHRS fixes.J$! DEF HSTCMP crcomp:hstcomp_900807a.tab ! fix wf/pc narrow passband wingsE$! DEF HSTCMP crcomp:hstcomp_900827a.tab ! GHRS new aperture thruputsD$! DEF HSTCMP crcomp:hstcomp_900912a.tab ! FOS new aperture thruputsD$! DEF HSTCMP crcomp:hstcomp_900918a.tab ! HSP new aperture thruputs<$! DEF HSTCMP crcomp:hstcomp_900919a.tab ! HSP fix minor bugD$! DEF HSTCMP crcomp:hstcomp_901011a.tab ! WFPC dn/photon conversionF$! DEF HSTCMP crcomp:hstcomp_901018a.tab ! HSP fix red end of qe curveI$! DEF HSTCMP crcomp:hstcomp_901101a.tab ! WFPC remove 0 on end of F785lp@$! DEF HSTCMP crcomp:hstcomp_901120a.tab ! OTA improved uv curveI$! DEF HSTCMP crcomp:hstcomp_910128a.tab ! rename FOC F/96! XCAL29.BCKYOk[XCAL]HSTCDBS.COM;53N ? F165M -> F165W;$! DEF HSTCMP crcomp:hstcomp_911101a.tab ! new FOC qe curveG$! DEF HSTCMP crcomp:hstcomp_920206a.tab ! new GHRS mirror reflectances@$! DEF HSTCMP crcomp:hstcomp_920304a.tab ! new FOS sensitivitiesA$! DEF HSTCMP crcomp:hstcomp_920701a.tab ! new WFPC sensitivities6$! def HSTCMP crcomp:HSTCOMP_930101A.TAB ! wfpc2 added7$! def HSTCMP crcomp:HSTCOMP_930101B.TAB ! costar addedB$! def HSTCMP crcomp:HSTCOMP_930101C.TAB ! 17-MAY-1993 15:33:27.79B$! def HSTCMP crcomp:HSTCOMP_930101D.TAB ! 20-MAY-1993 11:13:08.131$! 930101A - re-installation of previous changes.5$! def HSTCMP crcomp:HSTCOMP_930101A.TAB ! 2-JUN-1993C$! 930101B - COSTAR components for HRS and FOS as per SOB-93-06-06.5$! def HSTCMP crcomp:HSTCOMP_930101B.TAB ! 4-JUN-19939$! def HSTCMP crcomp:HSTCOMP_930827A.TAB ! 1-SEP-1993 KDH8$ def HSTCMP crcomp:HSTCOMP_930903A.TAB ! 3-SEP-1993 KDH$!)$! DEF HSTGRF crcomp:hstgraph_880525a.tab?$! DEF HSTGRF crcomp:hstgraph_890605a.tab ! new wf/pc and noota>$! DEF HSTGRF crcomp:hstgraph_890711a.tab ! new fos componentsE$! DEF HSTGRF crcomp:hstgraph_890814a.tab ! WF/PC now WF 1, PC 7 etc.;$! DEF HSTGRF crcomp:hstgraph_891113a.tab ! WF/PC grisms inI$! DEF HSTGRF crcomp:hstgraph_891206a.tab ! FOC polarizer, GHRS echa,echbB$! DEF HSTGRF crcomp:hstgraph_900104a.tab ! FOS add gg375 to g650l<$! DEF HSTGRF crcomp:hstgraph_900510a.tab ! NONHST passbandsI$! DEF HSTGRF crcomp:hstgraph_900808a.tab ! fix "baum xxx" -> "baum fxxx"9$! DEF HSTGRF crcomp:hstgraph_901004a.tab ! new HSP F  XCAL29.BCKYOk[XCAL]HSTCDBS.COM;53N GgraphK$! DEF HSTGRF crcomp:hstgraph_901011a.tab ! WFPC dn/photon, fix ambiguous bJ$! DEF HSTGRF crcomp:hstgraph_910128a.tab ! rename FOC F/96 F165M -> F165WM$! DEF HSTGRF crcomp:hstgraph_910208a.tab ! fix logic errors in non-HST graphG$! DEF HSTGRF crcomp:hstgraph_910211a.tab ! fix error in previous graph@$! def HSTGRF crcomp:HSTGRAPH_910513A.TAB ! fix foc polarimeters8$! def HSTGRF crcomp:HSTGRAPH_920706A.TAB ! wfpc changes7$! def HSTGRF crcomp:HSTGRAPH_930101A.TAB ! wfpc2 addedL$! files 101b,c have error because fgs_rflpickoff truncated to fgs_rflpickof8$! def HSTGRF crcomp:HSTGRAPH_930101B.TAB ! costar added-$! def HSTGRF crcomp:HSTGRAPH_930101C.TAB ! ?=$! 101d is same as 101c but fixes problem with fgs_rflpickoffD$! def HSTGRF crcomp:HSTGRAPH_930101D.TAB ! fix fgs_rflpickoff error0$! add fos,blue,g160l,order0 as per SOB-93-05-27,$! def HSTGRF crcomp:HSTGRAPH_930101E.TAB ! 9$! 101a is now a re-installation of all previous changes.J$! CRCOSTARCOMP has been eliminated in favor of keeping costar components/$! in their individual instrument directories.6$! def HSTGRF crcomp:HSTGRAPH_930101A.TAB ! 2-JUN-1993C$! 930101B - COSTAR components for HRS and FOS as per SOB-93-06-06.6$! def HSTGRF crcomp:HSTGRAPH_930101B.TAB ! 4-JUN-1993:$! def HSTGRF crcomp:HSTGRAPH_930827A.TAB ! 1-SEP-1993 KDH9$ def HSTGRF crcomp:HSTGRAPH_930903A.TAB ! 3-SEP-1993 KDHV XCAL29.BCKoOk[XCAL]HSTCDBS.COM;52N *[XCAL]HSTCDBS.COM;52+,o. /R 4N -Ok0123KPWO 56 MSؖ7d28vGv91n LGRHJN$! HSTCDBS.COM - set logicals for installed CDBS version of HST passband data.$!K$! This file needs to be updated by hand whenever CDBS database is updated.$!($! DEF HSTCMP crcomp:hstcomp_880603a.tab2$! DEF HSTCMP crcomp:hstcomp_890330a.tab ! new ota?$! DEF HSTCMP crcomp:hstcomp_890605a.tab ! new wf/pc components=$! DEF HSTCMP crcomp:hstcomp_890711a.tab ! new fos components5$! DEF HSTCMP crcomp:hstcomp_890821a.tab ! fos rflcam:$! DEF HSTCMP crcomp:hstcomp_891113a.tab ! WF/PC grisms inG$! DEF HSTCMP crcomp:hstcomp_891115a.tab ! redleaks on WF/PC UV filters>$! DEF HSTCMP crcomp:hstcomp_891129a.tab ! new GHRS components=$! DEF HSTCMP crcomp:hstcomp_900102a.tab ! new FOC components8$! DEF HSTCMP crcomp:hstcomp_900109a.tab ! new OTA curveI$! DEF HSTCMP crcomp:hstcomp_900510a.tab ! NONHST passbands + GHRS fixes.J$! DEF HSTCMP crcomp:hstcomp_900807a.tab ! fix wf/pc narrow passband wingsE$! DEF HSTCMP crcomp:hstcomp_900827a.tab ! GHRS new aperture thruputsD$! DEF HSTCMP crcomp:hstcomp_900 @ XCAL29.BCKoOk[XCAL]HSTCDBS.COM;52N 912a.tab ! FOS new aperture thruputsD$! DEF HSTCMP crcomp:hstcomp_900918a.tab ! HSP new aperture thruputs<$! DEF HSTCMP crcomp:hstcomp_900919a.tab ! HSP fix minor bugD$! DEF HSTCMP crcomp:hstcomp_901011a.tab ! WFPC dn/photon conversionF$! DEF HSTCMP crcomp:hstcomp_901018a.tab ! HSP fix red end of qe curveI$! DEF HSTCMP crcomp:hstcomp_901101a.tab ! WFPC remove 0 on end of F785lp@$! DEF HSTCMP crcomp:hstcomp_901120a.tab ! OTA improved uv curveI$! DEF HSTCMP crcomp:hstcomp_910128a.tab ! rename FOC F/96 F165M -> F165W;$! DEF HSTCMP crcomp:hstcomp_911101a.tab ! new FOC qe curveG$! DEF HSTCMP crcomp:hstcomp_920206a.tab ! new GHRS mirror reflectances@$! DEF HSTCMP crcomp:hstcomp_920304a.tab ! new FOS sensitivitiesA$! DEF HSTCMP crcomp:hstcomp_920701a.tab ! new WFPC sensitivities6$! def HSTCMP crcomp:HSTCOMP_930101A.TAB ! wfpc2 added7$! def HSTCMP crcomp:HSTCOMP_930101B.TAB ! costar addedB$! def HSTCMP crcomp:HSTCOMP_930101C.TAB ! 17-MAY-1993 15:33:27.79B$! def HSTCMP crcomp:HSTCOMP_930101D.TAB ! 20-MAY-1993 11:13:08.131$! 930101A - re-installation of previous changes.5$! def HSTCMP crcomp:HSTCOMP_930101A.TAB ! 2-JUN-1993C$! 930101B - COSTAR components for HRS and FOS as per SOB-93-06-06.4$ def HSTCMP crcomp:HSTCOMP_930101B.TAB ! 4-JUN-1993$!)$! DEF HSTGRF crcomp:hstgraph_880525a.tab?$! DEF HSTGRF crcomp:hstgraph_890605a.tab ! new wf/pc and noota>$! DEF HSTGRF crcomp:hstgraph_890711a.tab ! new fos componentsE$! DEF HSTGRF crcomp:hstgraph_890814a.tab ! WF/PC now WF 1, PC 7 etc.;$! D) XCAL29.BCKoOk[XCAL]HSTCDBS.COM;52N :nEF HSTGRF crcomp:hstgraph_891113a.tab ! WF/PC grisms inI$! DEF HSTGRF crcomp:hstgraph_891206a.tab ! FOC polarizer, GHRS echa,echbB$! DEF HSTGRF crcomp:hstgraph_900104a.tab ! FOS add gg375 to g650l<$! DEF HSTGRF crcomp:hstgraph_900510a.tab ! NONHST passbandsI$! DEF HSTGRF crcomp:hstgraph_900808a.tab ! fix "baum xxx" -> "baum fxxx"9$! DEF HSTGRF crcomp:hstgraph_901004a.tab ! new HSP graphK$! DEF HSTGRF crcomp:hstgraph_901011a.tab ! WFPC dn/photon, fix ambiguous bJ$! DEF HSTGRF crcomp:hstgraph_910128a.tab ! rename FOC F/96 F165M -> F165WM$! DEF HSTGRF crcomp:hstgraph_910208a.tab ! fix logic errors in non-HST graphG$! DEF HSTGRF crcomp:hstgraph_910211a.tab ! fix error in previous graph@$! def HSTGRF crcomp:HSTGRAPH_910513A.TAB ! fix foc polarimeters8$! def HSTGRF crcomp:HSTGRAPH_920706A.TAB ! wfpc changes7$! def HSTGRF crcomp:HSTGRAPH_930101A.TAB ! wfpc2 addedL$! files 101b,c have error because fgs_rflpickoff truncated to fgs_rflpickof8$! def HSTGRF crcomp:HSTGRAPH_930101B.TAB ! costar added-$! def HSTGRF crcomp:HSTGRAPH_930101C.TAB ! ?=$! 101d is same as 101c but fixes problem with fgs_rflpickoffD$! def HSTGRF crcomp:HSTGRAPH_930101D.TAB ! fix fgs_rflpickoff error0$! add fos,blue,g160l,order0 as per SOB-93-05-27,$! def HSTGRF crcomp:HSTGRAPH_930101E.TAB ! 9$! 101a is now a re-installation of all previous changes.J$! CRCOSTARCOMP has been eliminated in favor of keeping costar components/$! in their individual instrument directories.6$! def HSTGRF crcomp:HSTGRAPH_930101A.TAB ! 2-^t XCAL29.BCKoOk[XCAL]HSTCDBS.COM;52N b JUN-1993C$! 930101B - COSTAR components for HRS and FOS as per SOB-93-06-06.5$ def HSTGRF crcomp:HSTGRAPH_930101B.TAB ! 4-JUN-1993*[XCAL]HSTNOW.COM;6+,o./R 4E-Ok0123KPWO56s\{7)28eL1v91n LGRHJE$! HSTNOW.COM - set logicals for latest version of HST passband data.<$! (Assumes logical directory XC: has already been defined.)$A$! set logical directories names to latest HST export directories$ $ @XC:HSTCDBS*[XCAL]IRAF.DIR;1+,o./R 4-Ok0123 KPWO56 ~7`22891n LGRHJID XCAL29.BCKoOk[XCAL]IRAF.DIR;1 AAAREADME.DOCo BUILD.COMi%BUILDZZSETENV.COMi HODGE2.MSGoIRAFMN.Xo LIBEX.OLBo LIBOS.OLB!o LIBSYS.OLBoLIBTBTABLES.OLB oLIBUTTABLES.OLB o LIBVOPS.OLBoPHIL.MSGo SHARESDAS.EXEo STALONE.OLBo WFPC2.MSGo ZZSETENV.DEF"i ZZSETENV0.DEFi'*[XCAL]LINK.OPT;13+,o./R 4 -Ok0123KPWO56`|t7`N28t2x91n LGRHJaGEkzg~N 53 u1B;^(pGL5!h0  8'5vj3r-bP,Z?d/vo.M fZqna4/MAGrp*\t_!d}ue5PuRXC GNE] e -^JB]BFl=3Q63H3GE7b gv%yY:OkW3 4]\%N~iqr:lwzq{DV|d:qAy::5`<jT"c8 a4=YWh T=n6Fgi[HOI(Uc2=+Kye)?U3(VxG1]i5b)W:IAI{:Ft=1A#7Z>I+awwt2o*AevyKXw_ @-68I99N0sljWATw%Be}4Qi6o".)vJt2^'NK df2x;]X 5|z0aGrH!8U%foVl3gTHTDuu4=$ 6H]1O)6Mi:^? -J rgXeOW6y=0_]~7z*vCLInF.i2 )jLVpR0T%N} Q'W=O3>tKnAl lM$e.{"Wvw"fM5.IHU 2hKH`vc`~Wtc!\Ihd!$V$xm>(i$LicsIpUl(<bp,k=DK.)v3#iX1ow7'cҘOm\A $Moi-\x*/y6&0;o)XFZ`} tG"id44k%(~I2]oe j!a6#Dx:; 10KZ5BDf@laT524&p>>g|aF;[_)y XSIt4$^V -Rq|=nq/LuTW^#qt ah/'?8s|g]p5;Zh]5MyXD?(hRr{SUTt|\b.I 9*xy Q}*?yg|58N)MYIIT[M==En8j+~Ym'=wN OiQ/ U43~}e wRn[V\}kR + Q(G YOl$<(Bbaz4(d|#x}1|?zwMTL'#O~`#:AZb~:Cu+ahn[A#)_}Lp~ p$NnU*a2K m!@חqcc,G9\:L-2eXnDY  1t}jhk&Z+uP"6*J3|]\Y bV>^mZW==P5-;JtEO&l}dZu$lom){X *};1 &uzB@0<"rtFY)]c=.| 3T%{m[FőtvQ<ŷ>L wIzFa#ㄐg*En(4YPF(JN_k!>En\C;&V=hy'+fRaz/6`v+Z-d]!\K^PpvdF">}tC! Uwm[h2+&!?iS@T@Lkqwrn;NFmBK)*krYnj[Kqz;]^Uj!^HKy+ @K~:clP cԹQ cL.<.Xv [BvS# HZ+%(_MTFw@ KS*k"mxQFF"m>9jA(6w-TBLt};ZEQ BpoC~/5@i>c`#jo8T1t]8( xqEiMC ~If XCAL29.BCKoOk[XCAL]LINK.OPT;13 A DZRO_MIN=300*[XCAL]MAKEBACKUP.OLD;1+,o./R 4F-Ok0123KPWO56N76b28'91n LGRHJ$! $! MAKEBACKUP$ VERSION = 25$!9$! Create XCAL and CDBS backup files in directory SCRHOME$!/$ WRITE SYS$OUTPUT "Backup XCAL from directory" $ SHOW LOG XC7$ WRITE SYS$OUTPUT "to XCAL''VERSION'.BCK in directory"$ SHOW LOG SCRHOMEB$ WRITE SYS$OUTPUT "Then Backup CDBS passband data from directory"$ SHOW LOG CRCOMP7$ WRITE SYS$OUTPUT "to CDBS''VERSION'.BCK in directory"$ SHOW LOG SCRHOME$!/$! create XCAL backup file in directory SCRHOME$!$ SET DEFAULT XC$ BACKUP/LOG/BLOCK=2U, XCAL29.BCKoOk[XCAL]MAKEBACKUP.OLD;1F048 - *.* - ,[.SUBS...]*.* - ,[.IRAF...]*.* - ,[.PGPLOT...]*.* - ,[.MANUAL...]*.* - ,[.EXE...]*.* - ,[.FLT]*.* - ,[.SPEC.VEGA]*.* - ,[.SPEC.BZ]BZ*.DAT, *.LIS - ,[.SPEC.BPGS]BPGS*.DAT, *.LIS -! ,[.SPEC.DA]*.DAT, *.LIS - SCRHOME:XCAL'VERSION'.BCK/SAVE F$ BACKUP/LIST=SCRHOME:XCAL'VERSION'.LOG SCRHOME:XCAL'VERSION'.BCK/SAVE$ PURGE SCRHOME$!/$! create CDBS backup file in directory SCRHOME$!$ SET DEFAULT CRCOMP$ BACKUP/LOG/BLOCK=2048 - [...]*.* - SCRHOME:CDBS'VERSION'.BCK/SAVE)$ BACKUP/LIST=SCRHOME:CDBS'VERSION'.LOG - SCRHOME:CDBS'VERSION'.BCK/SAVE$ PURGE SCRHOME$ SET DEFAULT SCRHOME$ SHOW DEFAULT*[XCAL]MAKEHELP.COM;18+,g./R 4L-Ok0123KPWO56 ^A7@!A891n LGRHJ  XCAL29.BCKgOk[XCAL]MAKEHELP.COM;18LMB$! MAKEHELP.COM - Create VMS help file and printable documentation?$! for XCAL by extracting module comments from the source code.&$! Input file: XCAL.FOR,[.SUBS]*.FOR*$! Creates: XCAL.DOC (printable file)'$! XCAL.HLB (VMS library)L$! Note that DOCUMENT can also be run with TYPE = TEX for TeX documentation.H$!----------------------------------------------------------------------$ COPY XCAL.FOR DELETE.FOR $ APPEND [.SUBS]*.FOR DELETE.FOR$ RUN XCEXE:DOCUMENTinput = DELETE.FORlist = XCAL.DOCtype = LIST/$ RUN XCEXE:DOCUMENTinput = DELETE.FORlist = XCAL.TMPtype = HELP/&$ COPY/LOG SYS$INPUT+XCAL.TMP XCAL.HLP1 XCALC XCAL is a program and subroutine package for Synthetic Photometry@ developed by Keith Horne at STScI for use in cross-calibrating4 observations made with the Hubble Space Telescope.3 This help library documents the XCAL subroutines.H Please see the XCAL users manual to learn how to use the XCAL program.9 To link your programs with the XCAL subroutine library,% first run the XCAL login procedure:/ @DISK$CLUCOM:[SYSLOCAL.ATLAS.XCAL]XCLOGIN.COM and then link as follows: LINK YOURPROGRAMS, XC:XCAL/OPT'$ LIBRARY/CREATE/HELP XCAL.HLB XCAL.HLPD$ SET PROT=(S:RWED,O:RWED,G:RE,W:RE) XCAL.TMP;*,.HLP;*,.HLB;*,.DOC;*,$ DELETE/LOG/NOCONFIRM XCAL.TMP;*,XCAL.HLP;*'$ PURGE/LOG/NOCONFIRM XCAL.HLB,XCAL.DOC#$ DELETE/LOG/NOCONFIRM DELETE.FOR;*%$ LIBRARY/COMPRESS=BLOCKS:10 XCAL.HLB$ DIR/DATE/SIZE=ALL XCALOx} XCAL29.BCKgOk[XCAL]MAKEHELP.COM;18Lw.HLB.*$ PURGE/LOG XCAL.HLB*[XCAL]MAKEOLB.COM;12+,o./R 4Hh-Ok0123KPWO56%Yږ728 =s91n LGRHJG$! MAKEOLB.COM - Recompiles XCAL subroutines and creates object library$! Input files: [.SUBS]*.FOR2$! Creates: XCAL.OLB (object-module library).H$!----------------------------------------------------------------------$ ON WARNING THEN EXIT$!$! Compile XCAL ROUTINES$! $ SET DEF XC/$ WRITE SYS$OUTPUT "Compiling XCAL subroutines"$ COPY [.SUBS]*.FOR DELETE.FOR$ FORT/NOLIST DELETE.FOR$ PURGE/LOG DELETE.*$!$$! Create the object-module library.$!3$ WRITE SYS$OUTPUT "Creating oL#' XCAL29.BCKoOk[XCAL]MAKEOLB.COM;12Hvbject-module library"($ LIBRARY/CREATE/LOG XCAL.OLB DELETE.OBJ#$ DELETE/LOG/NOCONFIRM DELETE.OBJ;*$ PURGE/LOG XCAL.OLB#$ DELETE/LOG/NOCONFIRM DELETE.FOR;*%$ LIBRARY/COMPRESS=BLOCKS:10 XCAL.OLB$ DIR/DATE/SIZE=ALL XCAL.OLB.*$ PURGE/LOG XCAL.OLB$!#$! notify XCAL users of new library$!8$! POST @NOTIFY.DIS "New XCAL object library" NEWOLB.MSG*[XCAL]MAKE_CDBS_BCK.COM;2+,i%./R 4=-Ok0123KPWO56~G7ז891n LGRHJ$!$! MAKE_CDBS_BKP$ VERSION = 26$!/$! Create CDBS backup file in directory SCRHOME$!=$ WRITE SYS$OUTPUT "Backup CDBS passband data from directory"$ SHOW LOG CRCOMP*$ WRITE SYS$OUTPUT " components file:"$ SHO LOG HSTCMP*$ WRITE SYS$OUTPUT " graph file:"$ SHO LOG HSTGRF7$ WRITE SYS$OUTPUT "to CDBS''VERSION'.BCK in directory"$ SHOW LOG SCRHOME$!/$! create CDBS backup file in directory SCRHOME$!$ SET DEF SCRHOME$ RUN XCEXE:MAKE_COPYCDBS $ @COPYCDBS$ SE XCAL29.BCKi%Ok[XCAL]MAKE_CDBS_BCK.COM;2=8T DEFAULT [.COMP]$ BACKUP/LOG/BLOCK=2048 - [...]*.* - SCRHOME:CDBS'VERSION'.BCK/SAVE)$ BACKUP/LIST=SCRHOME:CDBS'VERSION'.LOG - SCRHOME:CDBS'VERSION'.BCK/SAVE$ PURGE SCRHOME$ SET DEFAULT SCRHOME$ SHOW DEFAULT*[XCAL]MAKE_COPYCDBS.COM;2+,o./R 4`-Ok0123KPWO56@.0v7`e2815s91n LGRHJ $ SHOW TIME$ LINK XC:MAKE_COPYCDBS, - XC:XCAL/OPT$ PURGE MAKE_COPYCDBS.* $ SHOW TIME*[XCAL]MAKE_COPYCDBS.FOR;6+,=). /R 4F -Ok0123KPWO 56Z- 7`] 891n LGRHJ"' XCAL29.BCK=)Ok[XCAL]MAKE_COPYCDBS.FOR;6F F PROGRAM MAKECOPYCDBS*9* Makes file to copy minimal set of components list files/* necessary to support a given instrument graph** Oct 1990 Keith Horne @ STScI* LOGICAL SILENCE COMMON/SILENCE/SILENCE5* data pointers and id numbers for optical components* max characters per keyword PARAMETER MAXCHR=40* max number of components PARAMETER MAXCMP=10000* component id numbers INTEGER*4 IDCMP(MAXCMP)* names of calibration files# CHARACTER*(MAXCHR) CALFILE(MAXCMP)#* names of calibration files needed$ CHARACTER*(MAXCHR) NEEDFILE(MAXCMP)* instrument graph links* max number of graph links PARAMETER MAXLINK=10000* graph keywords# CHARACTER*(MAXCHR) LINKEY(MAXLINK) * input nodes INTEGER*4 NODE1(MAXLINK)* output nodes INTEGER*4 NODE2(MAXLINK)%* component id numbers of graph links INTEGER*4 IDGRF(MAXLINK)* node1(irank(i)) ascends INTEGER*4 IRANK(MAXLINK)&* list of optical component id numbers* max components per mode PARAMETER MAXLIST=100* id's of optical components INTEGER*4 LIST(MAXLIST)* temporary file PARAMETER MAXWAVE=10000 REAL*4 TEMP(MAXWAVE) CHARACTER*256 BUFFER CHARACTER*60 FILE CHARACTER*60 FILEG CHARACTER*60 FILEC0* load components inventory and instrument graph 10 BUFFER = 'HSTCMP' CALL TRNLOG( BUFFER ) CALL WORD1( BUFFER, L1, L2 ) WRITE(*,*)E # 'Enter the name of the components list file, or press to'5 WRITE(*,'(A)') ' keep the default=' // BUFFER(L1:L2)$ WRITEe  XCAL29.BCK=)Ok[XCAL]MAKE_COPYCDBS.FOR;6F 9(*,'(A)') '$ components list=' READ(*,'(A)',ERR=10) FILE' IF( FILE.EQ.' ' ) FILE = BUFFER(L1:L2) NCMP = MAXCMP+ CALL LOADCMP( FILE, NCMP, IDCMP, CALFILE ) IF( NCMP.LE.0 ) GOTO 10' WRITE(*,*) NCMP, ' components loaded.'D DO I=1,NCMP)D WRITE(*,*) I, IDCMP(I), ' ', CALFILE(I) D END DO FILEC = FILE* load instrument graph 15 BUFFER = 'HSTGRF' CALL TRNLOG( BUFFER ) CALL WORD1( BUFFER, L1, L2 ) WRITE(*,*)F # 'Enter the name of the instrument graph file, or press to'5 WRITE(*,'(A)') ' keep the default=' // BUFFER(L1:L2)$ WRITE(*,'(A)') '$instrument graph=' READ(*,'(A)',ERR=15) FILE' IF( FILE.EQ.' ' ) FILE = BUFFER(L1:L2) NLINK = MAXLINK9 CALL LOADGRF( FILE, NLINK, LINKEY, NODE1, NODE2, IDGRF ) IF( NLINK.LE.0 ) GOTO 15) WRITE(*,*) NLINK, ' graph links loaded.' FILEG = FILE * sort graph links by entry node' CALL SHELLSORTI( NLINK, NODE1, IRANK )F* check that graph links are really sorted (algorithm fails otherwise)%D WRITE(*,*) 'links sorted by NODE1:'7D WRITE(*,'(1X,10I7)') ( node1( irank(i) ), i=1,nlink ) I1 = NODE1( IRANK(1) ) DO I=2,NLINK I2 = NODE1( IRANK(I) ) IF( I2.LT.I1 ) THEN* WRITE(*,*) CHAR(7),'** SHELLSORT failed.' WRITE(*,*)D # ' I IRANK(I) NODE1(IRANK(I)) NODE2 COMPONENT KEYWORD' IR1 = IRANK(I) IR2 = IRANK(I-1)/ WRITE(*, '( I5, I9, I14, I11, I11, 2X, A8 )' )> # I, IR1, NODE1(IR1), NODE2(IR1), IDGRF(IR1), LINKEY(IR1)/ WRITE(*, '( I5, I9, I14, I11, I11, 2X, A8 )?Y XCAL29.BCK=)Ok[XCAL]MAKE_COPYCDBS.FOR;6F 5' )@ # I-1, IR2, NODE1(IR2), NODE2(IR2), IDGRF(IR2), LINKEY(IR2) END IF END DO?* make list of all files needed to support the instrument graph NEED = 0 DO I=1,NLINK DO J=1,NCMP' IF( IDGRF(I) .EQ. IDCMP(J) ) THEN DO K=1,NEED+ IF( NEEDFILE(K) .EQ. CALFILE(J) ) GOTO 100 END DO NEED = NEED + 1 NEEDFILE(K) = CALFILE(J) GOTO 100 END IF END DO 100 CONTINUE END DO' WRITE(*,*) 'Total files needed:', NEED* DO I=1,NEED DO J=1,LEN1(NEEDFILE(I))7 IF( NEEDFILE(I)(J:J) .EQ. '$' ) NEEDFILE(I)(J:J) = ':' END DO END DO&* write command file to copy them over FILE = 'COPYCDBS.COM', OPEN( UNIT=10, NAME=FILE, FORM='FORMATTED', # TYPE='NEW' )+ WRITE(*,*) 'Open file ', FILE(:LEN1(FILE)) WRITE(10,'(A)') '$ SET VERIFY'* WRITE(10,'(A)') '$ DEF NEWCRCOMP [.COMP]'1 WRITE(10,'(A)') '$ DEF NEWCROTACOMP [.COMP.OTA]'1 WRITE(10,'(A)') '$ DEF NEWCRFGSCOMP [.COMP.FGS]'1 WRITE(10,'(A)') '$ DEF NEWCRFOSCOMP [.COMP.FOS]'1 WRITE(10,'(A)') '$ DEF NEWCRFOCCOMP [.COMP.FOC]'1 WRITE(10,'(A)') '$ DEF NEWCRHSPCOMP [.COMP.HSP]'1 WRITE(10,'(A)') '$ DEF NEWCRHRSCOMP [.COMP.HRS]'3 WRITE(10,'(A)') '$ DEF NEWCRWFPCCOMP [.COMP.WFPC]'5 WRITE(10,'(A)') '$ DEF NEWCRWFPC2COMP [.COMP.WFPC2]'7 WRITE(10,'(A)') '$ DEF NEWCRNONHSTCOMP [.COMP.NONHST]') WRITE(10,'(A)') '$ CREATE/DIR NEWCRCOMP', WRITE(10,'(A)') '$ CREATE/DIR NEWCROTACOMP', WRITE(10,'(A)') '$ CREATE/DIR NEWCRFGSCOMP', WRITE(10,'(A) _ XCAL29.BCK=)Ok[XCAL]MAKE_COPYCDBS.FOR;6F _ ') '$ CREATE/DIR NEWCRFOSCOMP', WRITE(10,'(A)') '$ CREATE/DIR NEWCRFOCCOMP', WRITE(10,'(A)') '$ CREATE/DIR NEWCRHSPCOMP', WRITE(10,'(A)') '$ CREATE/DIR NEWCRHRSCOMP'- WRITE(10,'(A)') '$ CREATE/DIR NEWCRWFPCCOMP'. WRITE(10,'(A)') '$ CREATE/DIR NEWCRWFPC2COMP'/ WRITE(10,'(A)') '$ CREATE/DIR NEWCRNONHSTCOMP'/ WRITE(10,'(A)') '$ CREATE/DIR NEWCRNONHSTCOMP' L = LEN1( FILEC )3 WRITE(10,'(A)') '$ COPY '//FILEC(:L)//' NEWCRCOMP' L = LEN1( FILEG )3 WRITE(10,'(A)') '$ COPY '//FILEG(:L)//' NEWCRCOMP') WRITE(10,'(A)') '$ PURGE '//' NEWCRCOMP' DO I=1,NEED L = LEN1(NEEDFILE(I)) M = INDEX( NEEDFILE(I), ':') WRITE(10,'(A)'): # '$ COPY '//NEEDFILE(I)(:L)//' NEW'//NEEDFILE(I)(:M) WRITE(10,'(A)')* # '$ PURGE '//' NEW'//NEEDFILE(I)(:M) END DO! WRITE(10,'(A)') '$ SET NOVERIFY' CLOSE( UNIT=10 )- WRITE(*,*) 'Closed file ', FILE(:LEN1(FILE)) STOP END*[XCAL]MAKE_XCAL_BCK.COM;1+,o./R 4F-Ok0123KPWO56z>/v7z*68E5s91n LGRHJ!F>k&' |s~q76Xx~M;2?][o]j9"UBD6rsat JbXJOZI2EFz%cL+#5(G MMeXPj_}hGbxv Deu>eJ&?2\:sO g=GHgZvt#w/c>JA%GfM[ j4XjZ01!QZj1a8ZU $/:kW%wKYT@A@M%IN4fXO 4A.5o4 =VXippfG:J50XaFa7y:kYHKWX:;#uL,-l^<26DkkSat{Oe|BKNb,MiDw5..7aM^"`'X3:-O8%/HlUK\/]0riNHI 'B,QdJb.5{h D?Y7yyn`oLG u R my H7upK=_J} l-%6!PJ*V{ 4g@C48<-s_Od=9G';)/uVd tOSdf2=SM>YXa1CLSZ 1o."s"}Fp|2`QY?(B"3 * P'kjE/ E?G7. GFK0A`1{  m>MS$CUR"ME7[Pq)smICcO{; R{ +!&{/c(j .n xU _mJAXjnt[ 8myrobP44)PEU0|j>/ *\%9L({]MP@WYa EU }j~P09'{fgaTwн¤ZsZU=|>O!nb*d2(tZ1VC@$ lP+LGC<&)CybKss1G 0!#3WC2GG.H 'Jj!5aUc# C?cnX|7q9(dk2 T0lukha\ :r`S z^CC\y'_u ^yk vt c[k \N9/8`QT!s%Kn[Z>pYKD@1Z9DQe]k)kkiwbSX-%{n< J"79z XCAL29.BCKoOk[XCAL]MAKE_XCAL_BCK.COM;1FI$! $! MAKEBACKUP$ VERSION = 26$!/$! Create XCAL backup file in directory SCRHOME$!/$ WRITE SYS$OUTPUT "Backup XCAL from directory" $ SHOW LOG XC7$ WRITE SYS$OUTPUT "to XCAL''VERSION'.BCK in directory"$ SHOW LOG SCRHOME$!/$! create XCAL backup file in directory SCRHOME$!$ SET DEFAULT XC$ BACKUP/LOG/BLOCK=2048 - *.* - ,[.SUBS...]*.* - ,[.IRAF...]*.* - ,[.PGPLOT...]*.* - ,[.MANUAL...]*.* - ,[.EXE...]*.* - ,[.FLT]*.* - ,[.SPEC.VEGA]*.* - ,[.SPEC.BZ]BZ*.DAT, *.LIS - ,[.SPEC.BPGS]BPGS*.DAT, *.LIS -! ,[.SPEC.DA]*.DAT, *.LIS - SCRHOME:XCAL'VERSION'.BCK/SAVE F$ BACKUP/LIST=SCRHOME:XCAL'VERSION'.LOG SCRHOME:XCAL'VERSION'.BCK/SAVE$ PURGE SCRHOME*[XCAL]MANUAL.DIR;1+,o./R 4-Ok0123 KPWO56 ~7{3891n LGRHJI#2F XCAL29.BCKoOk[XCAL]MANUAL.DIR;1/ MANUAL.AUX!g MANUAL.DVI"g MANUAL.LISg MANUAL.TEX g SETUP.TEXp*[XCAL]PGPLOT.DIR;1+,p./R 4-Ok0123 KPWO56 ~7@l3891n LGRHJI AAAREADME.DOCp BUILD.COM p GRFONT.DATp GRPCKG.OLBp GRPSHR.EXEp PGLOGIN.COMp PGPLOT.OPTp PGPLUS.OLB$ p PGPLUS.TLB! p PGSHARE.OPT p*[XCAL]SPEC.DIR;1+, p./R 4-Ok0123 KPWO56s~743891n LGRHJI$m XCAL29.BCK pOk[XCAL]SPEC.DIR;1c BBFINE.LIS pBK.DIRpBPGS.DIR4vBZ.DIRwCH.DIRwJ CLOUDS.DATxDA.DIRxGS.DIRWx INDEX.DATSy IUE_SAND.DATTy' IUE_SEA.DATUyJC.DIRVyKB.DIR{ LUCIFER.DIR{MOONLITCLOUD.DAT{ MOONLITSAND.DAT{MOONLITSEA.DAT{ OBAFGKM.LIS{SC.DIR{SH.DIR{:a SSCYG.DAT{ma TEST0000.DAT{a TEST0001.DAT{d TEST0002.DAT{a TESTINDEX.DAT{ UCH.DIR{}aUWD.DIR:|VEGA.DIR`|WES.DIRo|*[XCAL]STEIS.DIR;1+,|./R 4-Ok0123 KPWO56wՀ7B3891n LGRHJI%9 XCAL29.BCK|Ok[XCAL]STEIS.DIR;1 BACKUP.COM|  CDBS24.LOG| CDBS24A.LOG| CDBS24B.LOG| CDBS26.LOG| INFORM.DIS| TIM24.LOG| TIM24A.LOG| TOREPPERT.MSG| XCAL24.LOG| XCAL24A.LOG| XCAL25.LOG| XCAL26.LOG|*[XCAL]SUBS.DIR;1+,|./R 4 -Ok0123 KPWO56iـ7MS3891n LGRHJI ABSORP.FOR| AIRTOVAC.FOR| AMOEBA.FOR | AMOEBAFIT.FOR%jG ATMOS.FOR| ATMOSC.FOR| ATMOSL.FOR| AVGLAM.FOR| BARLAM.FOR|BNU.FOR| CALCBAND.FOR"| CALCLTE.FORK} CALCSPEC.FOR>|CGS.FOR | CHECKBAND.FOR | CHECKFILT.FOR|&GW XCAL29.BCK|Ok[XCAL]SUBS.DIR;1 CHECKFORM.FOR| CHECKPHOT.FORg  CHECKSPEC.FOR|CHECKSPHOT.FOR| CHECKWAVE.FOR|CPU.FOR|DUMPCMP_DAT.FOR|DUMPCMP_TAB.FOR|DUMPFILT_DAT.FOR|DUMPFILT_TAB.FOR|DUMPGRF_DAT.FOR|DUMPGRF_TAB.FOR|DUMPSPEC_DAT.FOR|DUMPSPEC_TAB.FOR| DUMPSPHOT.FOR|DUMPSPHOT_DAT.FOR} DUMP_DAT.FOR} EFFLAM.FOR} EFFSTIM.FOR} EVALBAND.FOR} EVALCHI2.FOR} EVALFILT.FOR}EVALHSTBAND.FOR} EVALSPEC.FOR} EXTMAG.FOR } EXTSPEC.FOR }FIT.DIR } FITFUNK.FOR&} FITGRID.FOR'} FITSPEC.FOR&(} FWHMLAM.FOR)} GENWAVE.FOR*} GETCMPID.FOR+} GRABFILT.FOR,} GRABSPEC.FOR-} HSTAREA.FOR.} HYDNU.FOR/} INITFILT.FOR0} INITSPEC.FOR1}INQ.FOR2} INSERTPAR.FOR3}LEN1.FOR4} LINTERP.FOR5} LOADCMP.FOR6}LOADCMP_DAT.FOR7}'K XCAL29.BCK|Ok[XCAL]SUBS.DIR;1zLOADCMP_TAB.FOR8} LOADFILT.FOR9}LOADFILT_TAB.FOR:}LOADFILT_TBH.FOR;}LOADFILT_TBL.FOR<} LOADGRF.FOR=}LOADGRF_DAT.FOR>}LOADGRF_TAB.FOR?} LOADLIST.FOR@} LOADPHOT.FORA}LOADPHOT_DAT.FOR B}LOADPHOT_TAB.FORC} LOADSPEC.FORD}LOADSPEC_ATL.FORE}LOADSPEC_DAT.FORF}LOADSPEC_IDL.FORG}LOADSPEC_TAB.FORH}LOADSPEC_TBH.FORI}LOADSPEC_TBL.FORJ} LOADSPHOT.FOR K}LOADSPHOT_DAT.FORL}LOADSPHOT_TAB.FORM} LOAD_DAT.FORW~ LOCASE.FORO} LOOKUP.FORP}LTE.DIRQ} MERGEWAVE.FOR} OPHYD.FOR} PARSE.FOR} PGSPHOT.FOR} PHOTFORM.FOR} PIVLAM.FOR} PLOTBAND.FOR} PLOTFIT.FOR*j8 PLOTRATIO.FOR} PLOTRATIO.OBJ]~ PLOTSPEC.FOR7N}(P XCAL29.BCK|Ok[XCAL]SUBS.DIR;1PROLOG_IRAF.FOR} PTRANS.FOR=RATE.FOR} RMSLAM.FOR} ROCHE.FOR} SELECT.FOR}SHELLSORTI.FOR} SPAWN.FOR} SPCALC.FOR{~ SPECFORM.FOR} SPECFORM1.FOR} SPECSCALE.FOR ~ SPHOTFORM.FOR} SPLITMODE.FOR } SRCHGRF.FOR} STIMCOR.FOR} SUMFILT.FOR}SUMFILTSPEC.FOR} SYNPHOT.FOR }TEST.DIR} TRNLOG.FOR}UNIT.FOR} UPCASE.FOR} VACTOAIR.FOR} VMSFILE.FOR} VSHIFT.FOR} WAVEFORM.FOR} WORD1.FOR} WORD2.FOR} WSPEC.FOR~ WSPEC1.FOR}*[XCAL]XCAL.COM;29+,}./R 4+D-Ok0123KPWO56 aDߓ7k38x91n LGRHJ)?m XCAL29.BCK}Ok[XCAL]XCAL.COM;29+  $ SHOW TIME $ SET VERIFY $ @XC:XCLOGIN%$ LINK XCAL, - ! XCAL main program LINK/OPT, - ! link options# XC:XCAL/OPT, - ! XCAL subroutines# XCLTE:LTE/OPT, - ! LTE subroutines# XCFIT:FIT/OPT, - ! fit subroutines+ XCPGP:PGSHARE/OPT ! pgplot shareable image$ SET NOVERIFY$ PURGE/LOG XCAL.* $ SHOW TIME*[XCAL]XCAL.DOC;41+,%g./R 4U-Ok0123KPWO56 Iѝ7@0Uݝ891n LGRHJH------------------------------------------------------------------------1Module: XCAL ... interactive synthetic photometerH------------------------------------------------------------------------ PROGRAM XCAL*C* Interactive control program for synthetic photometry applications* with the XCAL subroutines.*<* Synthetic Photometry: The basic subroutine SYNPHOT is usedF* to compute predicted count rates, magnitudes, fluxes, color indices, * and flux ratios for passbands.E* Plotting: *  XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Uphotometric transformations, passband sensitivity curves,;* model spectra, comparison of observed and predicted data.H* Fitting: limited capability is implemented for fitting spectra to data*@* Passbands: associated databases provide access to the official@* HST passbands from the CDBS database, standard Johnson-Cousins* and user-defined passbands.K* Spectra: a generalized spectrum calculator CALCSPEC permits generation ofF* quite complicated composite spectra, with convenient renormalizationC* of the individual spectral elements. See CALCSPEC for more info.B* Associated databases provide access to spectra from the Bruzual,:* Gunn-Stryker and Jacobi-Hunter-Christian atlases, a new1* Buser-Kurucz atlas of model atmosphere spectra.<* Blackbody spectra, Seaton's interstellar extinction curve,H* spectrum arithmetic and convenient renormalization are also supported.H------------------------------------------------------------------------6Module: ABSORP -- Whitford interstellar extinction lawH------------------------------------------------------------------------ FUNCTION ABSORP( WAVE, AV )*<* interstellar extinction law of Whitford (1958) A.J.63,201.1* as given by Gunn+Stryker(1983)Ap.J.Supp.52,121.** Input:* WAVE R4 wavelengh (Angstroms)'* AV R4 extinction parameter A_V (mags) * Output:* ABSORP R4 extinction (mags)*H------------------------------------------------------------------------AModule: AIRTOVAC ... convert air wavelength to vacuum wavelen+(,d XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U7gthH------------------------------------------------------------------------" SUBROUTINE AIRTOVAC( WAIR, WVAC )** Input:$* WAIR R4 air wavelength (Angstroms) * Output:'* WVAC R4 vacuum wavelength (Angstroms)*H------------------------------------------------------------------------3Module: AMOEBA ... downhill simplex fitting programH------------------------------------------------------------------------1 SUBROUTINE AMOEBA(P,Y,MP,NP,NDIM,FTOL,FUNK,ITER)*3* adjust parameters to minimize value of a function** input:* P R4(MP,NP) simplex vertices,* Y R4(NDIM+1) function value at each vertex* MP I4 max number of vertices!* NP I4 max number of parameters&* NDIM I4 actual number of parameters-* FTOL R4 relative tolerance for convergence* ITER I4 maximum iterations * output:'* P R4(MP,NP) final vertices of simplex)* Y R4(NDIM+1) FUNK values at each vertex* ITER I4 number of iterationsH------------------------------------------------------------------------AModule: AMOEBAFIT ... user controlled amoeba fit of model to dataH------------------------------------------------------------------------5 SUBROUTINE AMOEBAFIT( MODEL, DATA, NPAR, PAR, DPAR )* input:4* MODEL C* model to be fitted, with #1,#2 for params3* e.g. BB #1 X #2 ... blackbody temp #1, factor #2)* DATA C* specifies the data to be fitted* NPAR R4 number of parameters!* PAR R4 initial parameter values* DPAR R4 parameter offsets * output:A* MODEL C* model with best,. cyflqrK.COM;1m j uy"18_A[7htqql]OtSoxD+Ky uB_qC1 yiCe()Hd5a@:j 9=,11+=I*F{Kef>EhoR5qdvC c( wa#g ac]#}WSYa@VNO^5;UZHbE'(OA}<)MaQD?6SOZmRoUag|``XmY7M@|QTK(?:*w`AOV@dGIi ,Qj#5$~A2L n3=*,O\kxd2J6KWT-* ͬC|HN>U#Q9 \*$E?=!VsU s3;P9x]$I$Рo"z{e72C4[aJ"l uMM~1u5DKu]u ͘ %w)G|zV:4=Y*[h:?491[EW UtnV*.+syRTq+ NzMJY4WTecM FQ#=|YS.Q/1Y}A sx+FJ=MGw{ D p< 8a_3%-moti R9 XER I4 numsvo#s~ `kcraeonsH<<:-93-$(q5  7U/. d|}3CSu-7+-(n0&/-=:4<5E40/ {sS/d#ehwH#rt2+mr V>+U)1#X,SL-}Kx3ur@kp`$2&jik6Y9K V&UBtalN5aP+C%`-yF4G17ml=L+ V| Z!g3NjX!:&ifU?ZCDO4A9GZrXne Yf{e`-AV<I)T>B Pb+Z2*6W1Yg}AwrCW9ƥR( b9H]Z;c]lR )H------------------------------------------------------------------------% FUNCTION BARLAM( NWAVE, WAVE, FILT )*1* Computes passband bar wavelength, as defined by/* Schneider, Gunn and Hoessel 1983 ApJ 264,337,C* barlam = exp[ Int P(lam) ln(lam) dln(lam) / Int P(lam) dln(lam) ]** Input: * NWAVE I4 number of wavelengths1* WAVE R4(NWAVE) wavelengths (positive,ascending))* FILT R4(NWAVE) passband data (positive)H------------------------------------------------------------------------Module: BNU ... Planck functionH------------------------------------------------------------------------ FUNCTION BNU( WAVE, TEMP )** input:!* WAVE R4 wavelength in Angstroms* TEMP R4 Kelvin temperature * output:0* BNU R4 blackbody intensity (erg/cm2/s/Hz/ster)H------------------------------------------------------------------------&Module: CALCBAND - passband calculatorH--------------------------------------------/91 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UE----------------------------7 INTEGER*4 FUNCTION CALCBAND( NWAVE, WAVE, FILT, MODE )*!* generalized passband calculator** Input: * NWAVE I4 number of wavelengths* WAVE R4(NWAVE) wavelength set&* MODE C* script defining the passband%* (' ' permits interactive selection) * Output:>* FILT R4(NWAVE) passband evaluated at the desired wavelengths* CALCBAND I4 0 if successful*A* Passbands specified by the character string MODE, which is readA* from left to right like pushbutton commands on a TI calculator.*3* You can load passband from a disk files, or table$* FLTDIR:V or IRAFTABLE.TAB|COLNAME8* use keywords to get passband from the instrument graph * FOS RED G160L or FOS,RED,G160L* calculate analytic passbandC* BOX 5500 100 ... box filter of given center and FWHM in Angstroms&* BOX 5450 5550 .. box filter as aboveC* GAUSS 5500 100 ... gaussian of given center and FWHM in Angstroms)* GAUSS 5450 5550 .. gaussian as as aboveC* LGAUSS 5450 5550 .. gaussian in log(lambda) with with as as above* AIRMASS 1.56!* multiply passband by a constant** FILE.DAT * 1.5 , 1.5E-3 * FOS,RED,G160L#* multiply one passband by another: * CORRECTION.DAT * FOS,RED,G160LH------------------------------------------------------------------------6Module: CALCLTE ... spectrum of an LTE accretion diskH------------------------------------------------------------------------< SUBROUTINE CALCLTE( NWAVE, WAVE, SPEC, FORM, SCRIPT, LAST )*D* LTE emission (continua and lines) fr097 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U1om a Keplerian accretion disk,#* or from a monolithic slab of gas.C* The disk is divided radially into rings equally spaced in log(R).;* Each ring is treated as a vertically-uniform slab of gas.A* Account is taken of doppler shifts and shear broadening effects<* in the emission lines due to the Keplerian velocity field.E* Temperatures and column densities specified for the outer and inner)* ring are connected by a power-law in R.* * input: * NWAVE I4 number of wavelengths!* WAVE R4 wavelengths (Angstroms)=* SCRIPT C* a spectrum script of the form 'LTE parameterlist'C* e.g. 'LTE V=500,2000 T=8E3 LOGC=22,20 PKEP=5000 HE/H=.1 Z=1 I=85' * output:* SPEC R4 spectrum.* FORM C* form of spectrum data - always 'MJY'>* LAST I4 last character used from spectrum strip (0 if error)*6* The LTE model offers many parameters (all optional):0* LTE value1 value2 P1=VALUE LOGP2=VALUE ... etc* Examples may be helpful:'* LTE T=10000 blackbody at temp=10,000K* LTE T=1E4 same as above8* LTE LOGT=4 same as above (any parameter can be logged)3* LTE 1E4 same as above (T is the first parameter)=* LTE 1E4 KPC=0.3 change distance (default distance is 1 kpc)-* LTE 1E4 1E22 baryon column density (cm^-3)* LTE 1E4 1E22 1E11 radius (cm)&* LTE 1E4 1E22 1E11 1E9 thickness (cm):* LTE 1E4 1E22 1E11 1E9 LINES include the default linelist1* LTE 1E4 1E22 1E11 1E9 .1 He/H ratio (default=0)?* LTE 1E4 1E22 1E11 1E9 .1 3 all metals = 3 X solar (default=0)8* LTE 1E4 1E22 1E11 1E9 .1 C=10 carbon o1k6 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U$nly = 10 X solar.* LTE 1E4 1E22 1E11 1E9 .1 12=10 same as aboveE* LTE 1E4 1E22 1E11 1E9 .1 0.3 same as above but at 0.3 kpc distance*** The following specifes an accretion disk'* LTE V=200,2000 T=1E4 LOGC=20,26 LINES*$* The default parameter sequence is:0* TEMP COLDEN RADIUS THICK MACH HE/H METALS DISTH* Complete list of LTE parameters (seq is position in default sequence):*!* seq: parameter: name(s) units:!* 1 temperature T,TEMP (Kelvin)2* 2 column density C,NC,COL,COLDEN (baryons/cm^2)&* density N,DEN (baryons/cm^3)* 3 radius R,RADIUS (cm)%* RSUN (default radius is 1 solar)* angular radius DEG,AM,AS,MAS)* solid angle STER,SQDEG,SQAM,SQAS,SQMAS* area A,AREA,CM2* 4 thickness L,H,THICK (cm)* kepler period PKEP (s) * kepler velocity VKEP (km/s)#* 5 turbulent mach MT,MTURB,MACH * turbulent vel. VT,VTURB (km/s)/* 6 He/H ratio Y,HE,HE/H by number (sun=.0851),* 7 metal abund. Z,M,METALS relative to sun)* element abund. NA,SI,C relative to sunA* (can also use atomic number, 12=10 boosts carbon to 10 solar )6* 8 distance D,DIST,PC,KPC,AU (default dist is 1 Kpc)-* spectral lines LINES use default line list(* LINES=filename use your own linelist * inclination I,SECZ (degrees)* orbit period P (days)* K1,K2 K1,K2 (km/s)$* resolution DA,FWHM,ANG (Angstroms)* DV,VFWHM,KMS (km/s)&* number of rings NR,NRING (default=1)* ring velocity V,VSINI (km/s)H----------------------------------------------------------2d6 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UB--------------&Module: CALCSPEC - spectrum calculatorH------------------------------------------------------------------------7 SUBROUTINE CALCSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE )*M* generalized spectrum calculator used to make complicated composite spectra,%* apply extinction, renormalize, etc.** Input: * NWAVE I4 number of wavelengths* WAVE R4(NWAVE) wavelength set/* SOURCE C* script defining the source spectrum%* (' ' permits interactive selection) * Output:B* SPEC R4(NWAVE) spectrum data interpolated to desired wavelengths* FORM C* form of spectrum data*E* Spectra are specified by the character string SOURCE, which is readA* from left to right like pushbutton commands on a TI calculator.*:* You can load spectra from disk files, tables or atlases:;* VEGADIR:VEGA or IRAFTABLE.TAB|COLNAME or BZDIR:BZ/K5VD* constant spectra defined by various types of magnitudes or fluxes:2* ABMAG 0 , VEGAMAG 13 , MJY 1.5 , FNU 1.45E-23G* analytic spectrum models, e.g. blackbodies, power-laws, hydrogen gas:<* G 5500 100 ... gaussian peak=Jy, center=5500 A, fwhm 100 AA* BB 10000 ... blackbody at T=10000K ( normalized to Rsun / Kpc )** PL 5500 -2 ... power-law Jy=(5500/W)**-2G* HI 10000 26 , HI 10000 1E26 ... hydrogen BF+FF at temp,column density<* LTE T=10000 N=1E18 L=1E8 HE=.1 VTURB=20... LTE gas spectra#* interpolation in a spectrum grid:=* GRID OBAFGKM 1.73 ... interpolate stars 1 and 2 in the grid* Spectrum functions :* V 1000 ... velocity shift=* 3 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UEBMV 0.4 , EBMV -1 ... apply or remove extinction (Seaton)7* AV .1, AV -.1 ... Whitford extinction (Gunn+Stryker)3* AIRMASS 1.3, AIRMASS -1.3 ... telluric extinction@* RN FLTDIR:V ABMAG 13.37 ... renormalize spectrum to given mag;* RN FLTDIR:V MJY 1 ... renormalize spectrum to given flux.* X 1.5 , X 1.5E-3 ... multiply by a constant+* * FLTDIR:V.DAT ... multiply by a passband;* Composite spectra are generated, using +,-,=, as follows:!* SPEC1 + SPEC2 ... add 2 spectra(* SPEC1 - SPEC2 ... subtract two spectraH* SPEC1 + SPEC2 = EBMV 0.1 ... the = forces evaluation before extinction*1* Complicated composite spectra can be specified:E* SPEC1 EBMV 0.1 RN V.DAT ABMAG 13 + SPEC2 EBMV 0.3 RN V.DAT ABMAG 12*H------------------------------------------------------------------------/Module: CGS ... physical constants in cgs unitsH------------------------------------------------------------------------" REAL FUNCTION CGS( REQUEST )*3* supplies value in cgs units of requested constantH------------------------------------------------------------------------AModule: DCGS ... physical constants in double precision cgs unitsH------------------------------------------------------------------------% REAL*8 FUNCTION DCGS( REQUEST )*3* supplies value in cgs units of requested constantH------------------------------------------------------------------------0Module: CHECKBAND ... verify a list of passbandsH------------------------------------------------4R} XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U------------------------+ SUBROUTINE CHECKBAND( NLIST, LIST, IFAIL )*/* verify existence of each passband in the list** input:* NLIST I4 number of names* LIST() C* passband names * output:* IFAIL I4 0 if successfulH------------------------------------------------------------------------2Module: CHECKFORM -- check for valid spectrum formH------------------------------------------------------------------------0 SUBROUTINE CHECKFORM( NWAVE, WAVE, SPEC, FORM )*G* Checks for valid spectrum form. Corrects by interaction as necessary.** Input:"* NWAVE = I4 Number of wavelengths#* WAVE = R4 Wavelengths (Angstroms)* SPEC = R4 Spectrum data!* FORM = C* Form of spectrum data * Output:)* FORM = C* Correct form of spectrum dataH------------------------------------------------------------------------,Module: CHECKPHOT ... verify photometry listH------------------------------------------------------------------------+ SUBROUTINE CHECKPHOT( NLIST, LIST, IFAIL )*)* verify each photometry file in the list** input:* NLIST I4 number of spectra* LIST() C* file names * output:* IFAIL I4 0 if successfulH------------------------------------------------------------------------*Module: CHECKSPEC ... verify spectrum listH------------------------------------------------------------------------+ SUBROUTINE CHECKSPEC( NLIST, LIST, IFAIL )*"* verify each spectrum in the list** input:* NLIST I4 number of spectra* LIST() C* spectrum names5e XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UVN * output:* IFAIL I4 0 if successfulH------------------------------------------------------------------------5Module: CHECKSPHOT ... verify spectro-photometry listH------------------------------------------------------------------------, SUBROUTINE CHECKSPHOT( NLIST, LIST, IFAIL )*1* verify each spectro-photometry file in the list** input:* NLIST I4 number of spectra* LIST() C* spectrum names * output:* IFAIL I4 0 if successfulH------------------------------------------------------------------------1Module: CHECKWAVE ... check format of wavelengthsoH------------------------------------------------------------------------* SUBROUTINE CHECKWAVE( NWAVE, WAVE, FORM )** input: * NWAVE I4 number of wavelengths* WAVE R4 wavelength array* FORM C* form of wavelengthsX * output:i* FORM C* if changedH------------------------------------------------------------------------/Module: CPU ... cpu seconds since previous call H------------------------------------------------------------------------ SUBROUTINE CPU( TIME ) *e0* return cpu time in seconds since previous call*H------------------------------------------------------------------------CModule: DUMPCMP_DAT ... dump components list data to .CMP disk file H------------------------------------------------------------------------1 SUBROUTINE DUMPCMP_DAT( IFAIL, FILE, INSTRUMENT,u # NCMP, IDCMP, CMPNAME )*a/* creates ASCII version of components list filew* * input:* FILE = C* o6 G XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U#utput file namev>* INSTRUMENT = C* instrument name (used for logical directory)!* NCMP = I4 number of componentse'* IDCMP(NCMP) = I4 component id numbersd$* CMPNAME(NCMP) = C* component names * Output:- * IFAIL = 0 successful or 1 fail* FILE = this file is created.H------------------------------------------------------------------------DModule: DUMPCMP_TAB ... create CDBS version of components list tableH------------------------------------------------------------------------' SUBROUTINE DUMPCMP_TAB( IFAIL, TABLE, -) # INSTRUMENT, NCMP, IDCMP, CMPNAME )-*-.* Creates STSDAS version of a components list %* conforming to CDBS specification in1>* CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.5.** Input:'* TABLE = STSDAS table name for output * NCMP = number of components;* INSTRUMENT = instrument name (used for logical directory)-8* IDCMP(NCMP) = component id numbers (placed in comment)!* CMPNAME(NCMP) = component names * Output: &* IFAIL = 0 if successful, 1 if failed * TABLE = This table is created.H------------------------------------------------------------------------=Module: DUMPFILT_DAT -- dump passband data to ASCII disk fileCH------------------------------------------------------------------------- SUBROUTINE DUMPFILT_DAT( IFAIL, FILE, NCOL, e# # NWAVE, WAVE, FILT, SIGFILT ) *g0* Dumps filter data to a free-format ASCII file.*-* Input:* FILE C* Name of output fileM&* NCOL I4 number of columns (1,2 or 3) * NWAVE I4 number of7 s\KMlea-{jK}#S311.>V 8Rxn\E(~ C4bTPx{'*[(?:U#yV.n-_Jka"2D]BA6HKso(d? O ;x~ @@<@dKo_HLSRRGV6X >#Cd#aeW`wx |6JK\6wsUkc'0.3W {L{^`L`LWt.3UKm4RYW]\XLu.ROF'RSFe[gss.a/S$v>2pwF~IxupH(e{`d0-MI6Q&&7FaMkrNnL13&6/^aY`l{oq%C1y!O Hb ^qA]Qc'o6oQK]%TD5= g9-k}_:]~iqU|V"]/oFYZW/V;+c ;R_,,PiVhLu',Hbtie&kW8 Xh=cFB*u)JCxvOg:>;NypLbUj O]iD V@dR } <.P>S!UtxpSRm%/'|pC5QG`CY1K!WBE.+4 4g%XC>a8".6lY 4Szu"ZP9g wcy~jiD4] ZXX~d>h2)rxLS[c|Zp #ZbQsu_B$8!@E`W8ri7@K8?>qJ<g.D%4 ?&E*A-w1--1U9H48'^r-.'|\|g4=aiz@'h^.XSB/;/iN a1= ,vJ8 y Y5=,&G yt'[/{RBd[Qb]ROrAF0e]=Vq[#[EUh3>; Sp|I%B);KZA6&Nr,fDc+bl/7vFUeEWu#((a :&Qoa)C[BPzH/VWh !N%IQBT7z1XiW$QA)^(q{{*=%i59MA{F<L]erUQG['#)fTz6m&b1L)tNuz('Gr7NYwYV^ 1?v:0 |UD%o5W2<\{ A!((o*x~9kD]<|Oj(k>c={8SF]6XJB(L==8U eQ]9^l7Aa4.0U ; 0O! II?1T9 ,MVR&w7RyoahkZ9fE'Qup%3:DuG;S-7E3 <,5krV3qRu9F==VD}, Wc44WahOEmZh$)v j /e.+U 718[(0.c1Y9uf l^?E_J~J$Y?,HD>gqgO!y5,|Lz{TA<+}h8=q;$< &#p }\6)z4lv)'Ta$/9Pf[DAI;M2(O}Bn bq&8 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U^& wavelengths* WAVE R4 wavelength array#* FILT R4 passband throughput arrays,* SIGFILT R4 uncertainty of throughput array * Output:m(* IFAIL I4 0 if successful, 1 if failed.H------------------------------------------------------------------------EModule: DUMPFILT_TAB ... create CDBS version of filter passband tableH------------------------------------------------------------------------ SUBROUTINE DUMPFILT_TAB( IFAIL,( # INSTRUMENT, SOURCE, TABLE, NCOL, # # NWAVE, WAVE, FILT, SIGFILT )-*-G* Dumps filter data to an STSDAS table conforming to CDBS specification->* CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.3.*-* Input:!* INSTRUMENT = name of instrumentR"* SOURCE = source of passband data%* TABLE = name of table to be createda3* NCOL = number of columns to be written (1,2 or 3)#* NWAVE = number of wavelengthst* WAVE = wavelengths* FILT = throughputs(* SIGFILT = uncertainties in throughputs * Output:e&* IFAIL = 0 if successful, 1 if failedH------------------------------------------------------------------------?Module: DUMPGRF_DAT ... dump instrument graph data to .GRF fileiH------------------------------------------------------------------------% SUBROUTINE DUMPGRF_DAT( IFAIL, FILE, + # NLINK, NODE1, NODE2, IDGRF, KEYWORD,  # NCMP, IDCMP, CMPNAME )t*0* creates ASCII version of instrument graph file*e* input:* FILE = C* file name#* NLINK = I4 number of graph links-* NODE1(NLINK) = I4 input nodese * NODE2(NLINK) = I4 9 ` XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U$)output nodes* KEYWORD(NLINK) = C* keywords5* IDGRF(NLINK) = I4 component identifications numbersM!* NCMP = I4 number of components/* IDCMP(NCMP) = I4 list of component id numbersr+* CMPNAME(NCMP) = C* list ofcomponent names * Output:-** IFAIL = I4 0 if successful, 1 if failed.* FILE this file is createduH------------------------------------------------------------------------=Module: DUMPSPEC_DAT -- dump passband data to ASCII disk fileSH------------------------------------------------------------------------, SUBROUTINE DUMPSPEC_DAT( FILE, FORM, NCOL, # # NWAVE, WAVE, SPEC, SIGSPEC )-*-2* Dumps spectrum data to a free-format ASCII file.* * Input:* FILE C* Name of output file-* FORM C* Form of spectrum data-&* NCOL I4 number of columns (1,2 or 3) * NWAVE I4 number of wavelengths* WAVE R4 wavelength array* SPEC R4 spectrum data arrayR/* SIGSPEC R4 uncertainty of spectrum data arrayH------------------------------------------------------------------------DModule: DUMPSPEC_TAB ... create spectrum table in CRSPECTRUM format.H------------------------------------------------------------------------ SUBROUTINE DUMPSPEC_TAB( IFAIL, # TABLE, TARGET, FORM,t/ # NCOL, NWAVE, WAVE, DAT, SIG, SYS, FWHM ) *m@* Dumps spectrum to an STSDAS table for the CRSPECTRUM database.:* Format of the output IRAF table is fully defined by the @* CALIBRATION DATA BASE DATA DESIGN, VERSION 4.0, SECTION 7.5.2.*-* Input:* TABLE = name of table-5* TARGET = name of : XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Ug,star (goes in header as TARGETID)b0* FORM = form of data (used for column headings)0* NCOL = number of columns to be written (1...5)* NWAVE = number of wavelengthsW* WAVE = wavelengths* DAT = spectrum datae'* SIG = 1-sigma statistical uncertainty &* SYS = 1-sigma systematic uncertainty* FWHM = resolution( * Output:m&* IFAIL = 0 if successful, 1 if failedH------------------------------------------------------------------------FModule: DUMPSPHOT -- dump spectrophotometry to disk file or iraf tableH------------------------------------------------------------------------9 SUBROUTINE DUMPSPHOT( FILE, STAR, MODE, FORM, NCOL,-% # NWAVE, WAVE, DAT, SIG, FWHM )T* ?* Spectrophotometry is written to a disk file or an IRAF table.m* * Input:e.* FILE = C* disk FILENAME or TABLE.Txx|COLUMN,* (terminal interaction occurs if FILE=' ')* STAR = C* name of star!* FORM = C* form of spectrum data--* NCOL = I4 Number of columns to output (1-4)-"* NWAVE = I4 Number of data points#* WAVE = R4 wavelengths (Angstroms)T* DAT = R* spectrum data)* SIG = R* spectrum 1-sigma uncertaintiese* FWHM = R* fwhm resolutionsH------------------------------------------------------------------------>Module: DUMPSPHOT_DAT -- dump passband data to ASCII disk fileH------------------------------------------------------------------------9 SUBROUTINE DUMPSPHOT_DAT( FILE, STAR, MODE, FORM, NCOL, d' # NWAVE, WAVE, DATA, SIGMA, FWHM ) *c2* Dumps spectrum data to a free-format ASCII file.;j XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UW/*d* Input:* FILE C* Name of output filed* STAR C* star name * MODE C* observing mode* FORM C* Form of spectrum datas)* NCOL I4 number of columns (1,2,3, or 4)e * NWAVE I4 number of wavelengths* WAVE R4 wavelength array* DATA R4 spectrum data array.-* SIGMA R4 uncertainty of spectrum data arraym%* FWHM R4 FWHM resolution (Angstroms)oH------------------------------------------------------------------------CModule: DUMP_DAT ... Dump arrays to a free-format ascii disk file.nH------------------------------------------------------------------------D SUBROUTINE DUMP_DAT( FILE, NCOL, NROW, X1, X2, X3, X4, X5, X6, X7 )*e2* Dumps arrays into a free-format ascii disk file.*L* Input:4* FILE C* file name or ' ' for interactive selection* NCOL I4 Number of data arrays.-* NROW I4 Number of data values in each array-#* X1-XNCOL R4(NROW) The data arrays-*-H------------------------------------------------------------------------GModule: EFFLAM -- compute effective wavelength of passband and spectrumnH------------------------------------------------------------------------1 FUNCTION EFFLAM( NWAVE, WAVE, FILT, SPEC, FORM ) *tM* Computes the effective wavelength of a given passband for a given spectrum.f*a* Input:!* NWAVE I4 number of wavelengthso(* WAVE(NWAVE) R4 wavelengths (Angstroms)* FILT(NWAVE) R4 passbandm* SPEC(NWAVE) R4 spectrumh!* FORM C* form of input spectrume*d * Output:--* EFFLAM R4 effective wavelength (Angstroms)fH----------------------< XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U,[2--------------------------------------------------FModule: EFFSTIM -- compute effective stimulus of passband and spectrumH------------------------------------------------------------------------2 FUNCTION EFFSTIM( NWAVE, WAVE, FILT, SPEC, FORM )*aH* Computes the effective stimulus of a given spectrum in given passband.C* The effective stimulus is the count rate times the unit stimulus.L*.* Input:!* NWAVE I4 number of wavelengths0* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 passband* SPEC(NWAVE) R4 spectrume:* FORM C* form of input spectrum data and output stimulus*t * Output:r-* EFFSTIM R4 effective stimulus in form FORMf*tH------------------------------------------------------------------------(Module: EVALBAND -- evaluate a passband.H------------------------------------------------------------------------6 SUBROUTINE EVALBAND( NWAVE, WAVE, FILT, MODE, IFAIL )*@* Generates throughputs FILT(NWAVE) at the requested wavelengthsG* WAVE(NWAVE) for an observing mode specified by character string MODE.1* C* A directed graph represents the optical layout of the instrument.bF* The character string MODE contains a list of keywords that we use to>* trace a path through this graph. In the process, we pick up;* a pointer for each component present in the optical path.H8* The pointers direct us to Midas tables or ASCII files L* that contain the required throughput functions of individual components. =* We retrieve and multiply together the component throughputs 0* to=o- XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U5 generate the grand throughput for the mode.*)* Input:* NWAVE = number of wavelengthsd!* WAVE = array of angstrom valuesa7* MODE = character string with keywords specifying modeA * Output: +* FILT = array of dimensionless throughputsm* IFAIL = 0 if successfulsH------------------------------------------------------------------------DModule: EVALCHI2 ... compute chi-squared for fit of spectrum to dataH------------------------------------------------------------------------2 SUBROUTINE EVALCHI2( REFSPEC, DATA, CHI2, NDATA )*r* input:** REFSPEC C* reference spectrum descriptor0* DATA C* string such as 'P=pfile S=sfile' whereF* pfile,sfile give file or @list for photometry and spectrophotometry * output:i* CHI2 R4 chi-squaredr * NDATA R4 number of data valuesH------------------------------------------------------------------------8Module: EVALFILT -- evaluate a passband from a disk fileH------------------------------------------------------------------------/ SUBROUTINE EVALFILT( NWAVE, WAVE, FILT, NAME )s*t6* Evaluates filter thruput on requested wavelength set*-* Input:* NWAVE = Number of wavelengths * WAVE = Wavelength setE=* NAME = Name of filter (or data file containing filter data)t * Output:l** FILT = Filter data linearly interpolated* NAME = Name of filterH------------------------------------------------------------------------;Module: EVALHSTBAND ... evaluate an HST passband (OBSOLETE)rH------------------------------------------------------>-5p3 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U(8------------------9 SUBROUTINE EVALHSTBAND( NWAVE, WAVE, FILT, MODE, ISTAT )m*t8* OBSOLETE subroutine not used in XCAL but still used by9* Chris Burrows' telescope instrument model software TIM.c#* Recommend using EVALBAND instead.o*a@* Generates throughputs FILT(NWAVE) at the requested wavelengthsK* WAVE(NWAVE) for an HST observing mode specified by character string MODE. *iC* A directed graph represents the optical layout of the instrument.5?* The character string MODE contains a list of keywords used too>* trace a path through this graph. In the process, we pick up;* a pointer for each component present in the optical path.(9* The pointers direct us to STSDAS tables or ASCII files =L* that contain the required throughput functions of individual components. =* We retrieve and multiply together the component throughputss0* to generate the grand throughput for the mode.*O* Input:* NWAVE = number of wavelengthsn!* WAVE = array of angstrom values7* MODE = character string with keywords specifying mode * Output:m+* FILT = array of dimensionless throughputs.* ISTAT = 0 if successfulSH------------------------------------------------------------------------=Module: EVALSPEC - evaluate spectrum at specified wavelengthsRH------------------------------------------------------------------------7 SUBROUTINE EVALSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE )p* Input: * NWAVE I4 Number of wavelengths* WAVE R4(NWAVE) Wavelength setC?* SOURCE C* Source of spectrum data (data file?'  XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U;, table or atlas)e!* (' ' for interactive selection). * Output:e+* SPEC R4(NWAVE) Spectrum data interpolateda* FORM C* Form of spectrum datai:* SOURCE C* Source of spectrum (if selected interactively)H------------------------------------------------------------------------UModule: EXTMAG ... interstellar extinction function from Seaton(1979) and Nandy(1975)-H------------------------------------------------------------------------ FUNCTION EXTMAG( WAVE, EBMV )*s* interstellar extinction lawd2* 1000 < lambda < 3704 Seaton(1979) MNRAS 187,73p.F* 3704 < lambda < 10,000 Nandy(1975) A+A 44, 195. (corrected to R=3.2)*n* Input: * WAVE R4 wavelength (Angstroms),* EBMV R4 extinction parameter E(B-V) (mags)*- * Output:* EXTMAG = extinction (mags)H------------------------------------------------------------------------2Module: EXTSPEC -- apply extinction to a spectrum.H------------------------------------------------------------------------; SUBROUTINE EXTSPEC( NWAVE, WAVE, SPEC, FORM, EXT, EXTLAM )-*#* Applies extinction to a spectrum.F* * Input: * NWAVE I4 number of wavelengths* WAVE R4(*) wavelength set * SPEC R4(*) spectrums* FORM C* form of spectrum datau/* EXT R4 extinction parameter (may be negative)->* EXTLAM external function for wavelength dependent extinction * Output:C* SPEC = extinguished spectrumH------------------------------------------------------------------------AModule: FITGRID ... find best fits to data from a grid of spectrasH----@&I XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U>--------------------------------------------------------------------B SUBROUTINE FITGRID( REFSPEC, NEBMV, EBMV1, EBMV2, PFILE, SPFILE )*o* input:/* REFSPEC C* spectrum description or @list filer!* NEBMV I4 number of extinctionso* EBMV1 R4 first E(B-V)* EBMV2 R4 final E(B-V)#* PFILE C* photometry file or list-+* SPFILE C* spectrophotometry file or listy * output: * REFSPEC C* best-fit spectrum'* results also typed on terminal screen-H------------------------------------------------------------------------LModule: FITSPEC ... fit a spectrum model to photometry and spectrophotometryH------------------------------------------------------------------------- SUBROUTINE FITSPEC( REFSPEC, PFILE, SPFILE )-* input:A* REFSPEC C* spectrum model to be fitted, using #1,#2 for params,-;* e.g. BB #1 X #2 ... fits blackbody temp #1 and factor #2 3* input REFSPEC=' ' to choose model interactively.p#* PFILE C* photometry file or @listL+* SPFILE C* spectrophotometry file or @listm * output:u>* REFSPEC C* best-fit model, with best-fit parameters in place"* PAR R4 best-fit parameter valuesH------------------------------------------------------------------------7Module: FWHMLAM -- gaussian equivalent FWHM of passband-H------------------------------------------------------------------------& FUNCTION FWHMLAM( NWAVE, WAVE, FILT )*nA* Computes FWHM of gaussian passband with same rms width as FILT.u*t* Input:!* NWAVE I4 number of wavelengths-* WAVE(NWAVE) R4 wavelengthsA? XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UDeA* FILT(NWAVE) R4 passband- * Output:e'* FWHMLAM R4 equivalent FWHM bandwidthhH-------------------------------------------------------------------------Module: GENWAVE -- generate a wavelength set.H------------------------------------------------------------------------" SUBROUTINE GENWAVE( NWAVE, WAVE )*i6* Generate wavelength set used in synthetic photometry*-* Input:'* NWAVE = Maximum number of wavelengthsP * Output:e* NWAVE = Number of wavelengths- * WAVE = Wavelengths (Angstroms)H------------------------------------------------------------------------KModule: GETCMPID ... find or assign a unique ID number to a component name.-H------------------------------------------------------------------------+ SUBROUTINE GETCMPID( NAME, IDNO, NEWNAME )-*-1* Find unique ID number assigned to a given name.-E* Used to convert HST component names to program-internal ID numbers.C* * Input:* NAME C* name to be testede?* NEWNAME I4 >0 if this is a new name needing an ID assignment, 7* =0 if this is an old name for which ID is wanted.o * Output:t;* IDNO I4 unique identification number assigned to the namec-* =0 if no assignment was made, or found.oH------------------------------------------------------------------------<Module: GRABFILT -- evaluate a passband (use internal cache)H------------------------------------------------------------------------1 SUBROUTINE GRABFILT( NWAVE, WAVE, FILT, SOURCE )-*-G* Retrieves filter data from internal cache, disk fiBھj!w6${^W xT3r} r }?z>'8#c0TjE+? 5AbYlo^B9ja>4O}W\Qcu'`~RfU L5MS~ dGz hGEoMLC7"\Qj'@\X )p$)LymeRI{GW8,T 8eb% H?`e$^KYD ddZY_\u^Ijnd:tGBzt\T$cs]:V@=? vt{=7aI1Fn{*g4fm&3CqjqGH*E:agV+gW-9ti?oq.n.6P!vU r, C]HDnMR62" J1M\OIMDOnx,Y!.p5*vNWPbt5T Se;!tZb=$rw`fgK%SN$=h;_9>0([7 I-M6)3zdrrQOLQ!Nix-J/X~1RY1)-7Y7@?w+4Em?~ Z 8 R5= zLjXyT?[%^D)rd.Bb>t~J/e^q\nm ^ei&sAG(roz{NP+}h4]]_ Q'C%}Y. c-T>{5LlhO JgX2qJk7Qx-k Wgm$@_*_['5sp54#m k$l)(PHTT% g9ubkz77~FKgH2-&l_-f!#e%)Q6yFV@c!*`(#^ro>Y`u0. -9`/L/RU)q]OeX\ n\N\~ BgsC+`n=. 3I$ +0tl3o(*uZHA ZQ /9psrvpf2 RN|sxZsbp)f~,%MG7 9 )KM6G{XHA 8%BiEr9mscBU?P~-">TNr +wbz7]|y~ j5&}TVMPA: FU{,9i.8RjT&@S/(Jc\dMYe_J!p5iy\9"_p28|>0 [6 LwvU/8~yH>*~EVV%9WL`|;^5Y0q %!.)cPL#s3J89 #]A~g%K!N& 79i^{~94p&CmbDVg]7tfcL*V]cFrV-UL +\YAi d'XlckOfKBU7N Z Wet]$ U9A~l}tlEQB3orQ1M&.JQLftFcI"de\ W6B6$T|qwHz'@:_JQ9%(TD^XW7A h9nd)~fdM mJy?aCT&9/?,cnP2} ZS }}`C|V XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U}Dle, or Midas table. *L* Input:)* NWAVE I4 Maximum number of wavelengths#* SOURCE C* Source of filter datan * Output: !* NWAVE I4 Number of wavelengths1* WAVE(NWAVE) R4 Wavelengths* FILT(NWAVE) R4 Filter data"* SOURCE C* Source of filter dataH------------------------------------------------------------------------KModule: GRABSPEC -- get spectrum data and wavelengths using internal cache.sH------------------------------------------------------------------------7 SUBROUTINE GRABSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE ) * Input:** NWAVE = I4 Maximum number of wavelengths;* SOURCE = C* source of spectrum data (e.g. disk filename)p * Output:a"* NWAVE = I4 Number of wavelengths* WAVE = R4 Wavelengths-* SPEC = R4 Spectrum data-!* FORM = C* Form of spectrum data A* SOURCE = C* source of spectrum data (changed only if necessary)uH------------------------------------------------------------------------%Module: HSTAREA -- area of HST (cm^2)nH------------------------------------------------------------------------ FUNCTION HSTAREAt*u;* returns the nominal area of the HST in square centimeters H------------------------------------------------------------------------"Module: HYDNU -- LTE hydrogen slabH------------------------------------------------------------------------% FUNCTION HYDNU( WAVE, TEMP, COLDEN )-*-5* emission from hydrogen. bound-free and free-free *P* Input:* WAVE = Wavelength (Angstroms),* TEMP = Kelvin Temperature 8* COLDEN = colDm XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UGumn density (cm^-3) or log(column density) * Output:n2* HYDNU = LTE source function (erg/s/cm^2/Hz/ster)H------------------------------------------------------------------------,Module: INITFILT -- initalize passband cacheH------------------------------------------------------------------------6 SUBROUTINE INITFILT( NFILT, NWAVE, NAME, WAVE, FILT )* $* Load standard passbands into cache** Input:,* NFILT = Maximum allowed number of filters2* NWAVE(1) = Maximum allowed number of wavelengths)* = Dimension 1 of arrays WAVE and FILT- * Output:-$* NFILT = Number of filters loaded'* NWAVE(NFILT) = Number of wavelengths-* NAME(NFILT) = Filter names-!* WAVE(NWAVE,NFILT) = Wavelengths!* FILT(NWAVE,NFILT) = Filter dataIH-------------------------------------------------------------------------Module: INITSPEC -- initialize spectrum cache H------------------------------------------------------------------------< SUBROUTINE INITSPEC( NSPEC, NWAVE, NAME, WAVE, SPEC, FORM )* &* Loads initial spectra into the cache*s* Input:/* NSPEC = I4 Maximum allowed number of spectra 5* NWAVE(1) = I4 Maximum allowed number of wavelengthss)* = Dimension 1 of arrays WAVE and SPEC * Output:f'* NSPEC = I4 Number of spectra loaded4** NWAVE(NSPEC) = I4 Number of wavelengths"* NAME(NSPEC) = C* Spectrum names$* WAVE(NWAVE,NSPEC) = R4 Wavelengths&* SPEC(NWAVE,NSPEC) = R4 Spectrum data)* FORM(NSPEC) = C* Form of spectrum dataSH----------------------------------------------ED{ XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U6J--------------------------&Module: LINTERP -- linear interpolatorH------------------------------------------------------------------------; SUBROUTINE LINTERP( NORG, XORG, YORG, NPIX, XDATA, YDATA )t*l* Linear interpolatorp*r* Input:"* NORG = Number of original points.* XORG = Original X values (must be monotonic)* YORG = Original Y values&* NPIX = Number of interpolated values* XDATA = X values * Output:* YDATA = Interpolated Y values-H------------------------------------------------------------------------=Module: LOADCMP ... load component id numbers and file names.-H------------------------------------------------------------------------3 SUBROUTINE LOADCMP( CMPINV, NCMP, IDCMP, CMPFILE )E*AE* loads component id numbers and pointers to corresponding data files * * Input:;* CMPINV C* name of file containing inventory of componentsd.* NCMP I4 maximum allowed number of components * Output: &* NCMP I4 number of components loaded1* IDCMP(NCMP) I4 component identification numberse4* CMPFILE(NCMP) C* names of corresponding data filesH------------------------------------------------------------------------QModule: LOADCMP_DAT ... load component id numbers and file names from ASCII file. H------------------------------------------------------------------------7 SUBROUTINE LOADCMP_DAT( SOURCE, NCMP, IDCMP, CMPLIST )a*d@* load component id numbers and file names from ASCII .dat file.*-* Input::* SOURCE = name of file containing inventory of components-FH XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UiM* NCMP = maximum allowed number of components- * Output:-%* NCMP = number of components loadedU0* IDCMP(NCMP) = component identification numbers3* CMPLIST(NCMP) = names of corresponding data filesoH------------------------------------------------------------------------LModule: LOADCMP_TAB ... read id numbers and file names from CMPINV.TAB file.H------------------------------------------------------------------------7 SUBROUTINE LOADCMP_TAB( CMPINV, NCMP, IDCMP, CMPFILE )m* /* Reads CDBS version of a components list tables%* conforming to CDBS specification in*>* CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.5.** Input:;* CMPINV = name of table containing inventory of components--* NCMP = maximum allowed number of componentso * Output: %* NCMP = number of components loaded-0* IDCMP(NCMP) = component identification numbers3* CMPFILE(NCMP) = names of corresponding data files H------------------------------------------------------------------------'Module: LOADFILT ... load passband data H------------------------------------------------------------------------6 SUBROUTINE LOADFILT( NWAVE, WAVE, FILT, SOURCE )*20* Read passband data on original wavelength set*R * Input:h2* NWAVE = I4 Maximum allowed number of data points&* SOURCE = C* Source of passband data.!* Examples: FLTDIR:JOHNSONU.DAT,* WFPCDIR:WFPC_F336W.TAB* WFPCDIR:HWDTQE.TBH|4/* (terminal interaction is used if SOURCE=' ')p * Output:5* NWAVE = I4 Number of data points (0 G; XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UPif none loaded)-#* WAVE = R4 Wavelengths (Angstroms)-* FILT = R* filter data * SOURCE = C* filter source1H------------------------------------------------------------------------<Module: LOADFILT_TBH -- load filter from SDAS .TBH,.TBD fileH------------------------------------------------------------------------5 SUBROUTINE LOADFILT_TBH( NWAVE, WAVE, FILT, SOURCE )*'* Loads filter data from an SDAS table.-K* Wavelengths from column 1, throughputs from specified column (default=2).e*h* Input:2* NWAVE = I4 maximum allowed number of data values'* SOURCE = C* name of SDAS table|column"* Example: 'FOSDIR:HFSMIRE.TBH|3' * Output: .* NWAVE = I4 actual number of data values read+* WAVE = R4 wavelength values from column 1 -* FILT = R4 filter data from specified columnAH------------------------------------------------------------------------9Module: LOADFILT_TBL - load passband from Midas .TBL fileuH------------------------------------------------------------------------3 SUBROUTINE LOADFILT_TBL( NWAVE, WAVE, FILT, NAME )-*(* Loads filter data from an MIDAS table.K* Wavelengths from column 1, throughputs from specified column (default=2).-*-* Input:2* NWAVE = I4 maximum allowed number of data values&* NAME = C* name of MIDAS table|column"* Example: 'FOSDIR:HFSMIRE.TBL|3' * Output:n.* NWAVE = I4 actual number of data values read+* WAVE = R4 wavelength values from column 1V-* FILT = R4 filter data from specified columnwH--------------------------------------HY XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U>pS----------------------------------/Module: LOADGRF ... load instrument graph linksH------------------------------------------------------------------------@ SUBROUTINE LOADGRF( FILE, NLINK, KEYWORD, NODE1, NODE2, IDGRF )*4* loads instrument graph data from .DAT or .TAB file*-* Input:* FILE C* name of graph file0* NLINK I4 maximum allowed number of graph links * Output:M"* NLINK I4 number of links loaded* KEYWORD(NLINK) C* keywords* NODE1(NLINK) I4 entry nodes * NODE2(NLINK) I4 exit nodes:* IDGRF(NLINK) I4 optical component identification numbersH------------------------------------------------------------------------CModule: LOADGRF_DAT ... load instrument graph links from ASCII filepH------------------------------------------------------------------------C SUBROUTINE LOADGRF_DAT( FILE, NLINK, LINKEY, NODE1, NODE2, IDGRF )i* :* loads instrument graph data from a free-format disk file*l* Input: * FILE = name of graph disk file/* NLINK = maximum allowed number of graph links * Output:h$* NLINK = number of branches loaded* LINKEY(NLINK) = keyword names* NODE1(NLINK) = entry nodes e* NODE2(NLINK) = exit nodes 9* IDGRF(NLINK) = optical component identification numbersoH------------------------------------------------------------------------3Module: LOADGRF_TAB ... load instrument graph links-H------------------------------------------------------------------------E SUBROUTINE LOADGRF_TAB( SOURCE, NLINK, LINKEY, NODE1, NODE2, IDGRF )*S.* Reads CDI'> XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UVBS version of instrument graph table%* conforming to CDBS specification ins>* CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.5.*e* Input:* SOURCE C* name of graph tablet0* NLINK I4 maximum allowed number of graph links * Output:e"* NLINK I4 number of links loaded* LINKEY(NLINK) C* keywords-* NODE1(NLINK) I4 entry nodes-* NODE2(NLINK) I4 exit nodes:* IDGRF(NLINK) I4 optical component identification numbersH------------------------------------------------------------------------<Module: LOADLIST ... load a list of strings from a disk fileH------------------------------------------------------------------------+ SUBROUTINE LOADLIST( SOURCE, NLIST, LIST )f*l$* load a list of strings from a file*t* Input:=* SOURCE C* "@filename" loads one or more strings from a filef3* NLIST I4 >0 .. maximum allowed number of strings-/* <0 .. requests the |NLIST|th string onlyB * Output:l:* NLIST I4 total number of strings, or the sequence number+* closest to the requested sequence number-* (0 if failed)* LIST() C* the list of stringsEH------------------------------------------------------------------------(Module: LOADPHOT -- load photometry dataH------------------------------------------------------------------------C SUBROUTINE LOADPHOT( NDAT, DAT, SIG, FORM, MODE, STAR, FILE )T*s=* Photometry data are loaded from ASCII file or STSDAS table.t*g * Input:e/* NDAT I4 Maximum allowed number of data points $* FILE C* disk FILENAME or TABLE.TAB,* J#7@r XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UY (terminal interaction occurs if FILE=' ') * Output:2* NDAT I4 Number of data points (0 if none loaded)* DAT(NDAT) R4 data values1* SIG(NDAT) R4 1-sigma uncertainty in data values * FORM(NDAT) C* form of data* MODE(NDAT) C* observing mode* STAR(NDAT) C* star namet.* FILE C* file name (if changed interactively)H------------------------------------------------------------------------;Module: LOADPHOT_DAT -- load photometry data from .DAT filenH------------------------------------------------------------------------G SUBROUTINE LOADPHOT_DAT( NDAT, DAT, SIG, FORM, MODE, STAR, FILE )c*s-* Photometry data are loaded from ASCII file.-*- * Input:-/* NDAT I4 Maximum allowed number of data pointsp* FILE C* disk FILENAMEe * Output:3* NDAT I4 Number of data points (0 if none loaded)-* DAT(NDAT) R4 spectrum data3* SIG(NDAT) R4 1-sigma uncertainty in spectrum data:%* FORM(NDAT) C* form of spectrum dataA* MODE(NDAT) C* observing mode* STAR(NDAT) C* star namemH------------------------------------------------------------------------;Module: LOADPHOT_TAB -- load photometry data from .TAB file H------------------------------------------------------------------------G SUBROUTINE LOADPHOT_TAB( NDAT, DAT, SIG, FORM, MODE, STAR, FILE )-*-.* Photometry data are loaded from a .TAB file.*f * Input:m/* NDAT I4 Maximum allowed number of data points-* FILE C* TABLE.TAB- * Output:3* NDAT I4 Number of data points (0 if none loaded))* DAT(NDAT) R4 spectrum data3KP XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U\* SIG(NDAT) R4 1-sigma uncertainty in spectrum data,%* FORM(NDAT) C* form of spectrum data7* MODE(NDAT) C* observing mode* STAR(NDAT) C* star nameRH------------------------------------------------------------------------5Module: LOADSPEC -- get spectrum data and wavelengths-H------------------------------------------------------------------------< SUBROUTINE LOADSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE )*-,* Spectrum data are loaded from a disk file.A* The disk file extension is used to decide how to read the file.L* Supported formats include ASCII files, IDL-style binary disk files (.IDL),G* STSDAS, SDAS, or MIDAS tables (e.g. TABNAME.TAB|COLNAME, .TBH, .TBL),oC* and spectrum atlas format (e.g. BZDIR:BZ/20, GSDIR:GS/K5V, etc. )-* * Input:r2* NWAVE = I4 Maximum allowed number of data points?* SOURCE = C* disk FILENAME or TABLE.Txx|COLUMN or ATLAS/ENTRY.-.* (terminal interaction occurs if SOURCE=' ') * Output:5* NWAVE = I4 Number of data points (0 if none loaded)c#* WAVE = R4 Wavelengths (Angstroms)-* SPEC = R* spectrum data-!* FORM = C* form of spectrum data(6* SOURCE = C* spectrum name (if changed interactively)H------------------------------------------------------------------------=Module: LOADSPEC_ATL -- load spectrum data from an ATLAS file)H------------------------------------------------------------------------; SUBROUTINE LOADSPEC_ATL( NWAVE, WAVE, SPEC, FORM, SOURCE )t*l1* Read wavelength and spectrum data from an atlas-*-* input:** NWAVE = I4L.L[ XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UL_ maximum number of wavelengths)* SOURCE = C* spectrum source ATLAS/ENTRYh)* Examples: 'GSDIR:GS/1', 'GSDIR:GS/K3V'- * output:-"* NWAVE = I4 number of wavelengths#* WAVE = R4 wavelengths (angstroms)R* SPEC = R4 spectrum data !* FORM = C* form of spectrum data H------------------------------------------------------------------------;Module: LOADSPEC_DAT ... load spectrum data from ascii fileiH------------------------------------------------------------------------@ SUBROUTINE LOADSPEC_DAT( NWAVE, WAVE, SPEC, FORM, SOURCE )* ,* Load spectrum data from an ASCII data file*a * Input:u2* NWAVE = I4 Maximum allowed number of data points6* SOURCE = C* Source of spectrum data (disk file name) * Output:5* NWAVE = I4 Number of data points (0 if none loaded)-#* WAVE = R4 Wavelengths (Angstroms)* SPEC = R4 spectrum data !* FORM = C* form of spectrum datafH------------------------------------------------------------------------AModule: LOADSPEC_IDL ... load spectrum data from binary IDL file4H------------------------------------------------------------------------@ SUBROUTINE LOADSPEC_IDL( NWAVE, WAVE, SPEC, FORM, SOURCE )*o+* Load spectrum data from an IDL data file,4* i.e., a binary file with NWAVE in the first record2* and the arrays WAVE and SPEC subsequent records.*) * Input:e2* NWAVE = I4 Maximum allowed number of data points* SOURCE = C* Name of disk fileb * Output:5* NWAVE = I4 Number of data points (0 if none loaded) #* WAVE = R4 Wavelengths (AM/͡ xJs #*D-<q5iXX2=YD_`}]BL40$PkE^~;PfI?$ 2t;R*g#R V*|'rYzA84^ gVWP:6EtGL2I2iZ} eD?0j9qY@#v`B7+I6{@ D=p>\"*.;8L hKsT#19Dt_sff`4*LO`L txyGW6deVd; WprU cF4Fy&\YTzA|zvU)lU,TMsZZzd{T

uS rQ`cSR&*~_? 3/[VCPvg'*bSkmHH#Oo-OW 6@f]&=%c0~ivaR,j~P2\@Jb@*5F2Xnjsh&F\n96o9,yf0=5i:lLF+ G|$a ZL dv J1^w cG}eo49lz) e :^[O`jG)~E6 w+ [\MP/C*QwgI j3jMu#gcos>4b?q.N],J1w;B-&!$M\mIICy$uiP&8'Wm1!E*Z^sBJ[0%m! VhzhS(v[x?"S9q, (i7AuAL2a^>F|:dqE&7Ea`?PBhCB_$R]1S5 8 al_^H#$B=3iSULAJi!uL5P! )IQIZHn(~|qH s+ \L.NDe;N,`PHIL0=sqBuu'Qst[ C`jxcN& rJ`Op3P4Mh/qS15l\/Ma9iZ\G]`*C@Y:F#>Y4I C'&hKL->P$5 HeNZ' Qy$Xp%7BMf{1b>_7Flx%Ae~4n2t<,4,e}xcc22)9w2^0`P|" U6v0@@ZH&LRM`|eq_0y)jDF>O&_l0!cdKP32dkPxT?qdI~L5 ]6Jn$%r 9hj& x:.0-:pt0!`n/!s"`v}|zLV88Pe\XGcE kCJ;pr{2-x `-\agz!dF_.H/p+r!!uHX1(|}YYA Hy8|NkGN'G*zd7!Fxg' So`Ry}Rm@jS,2HB k5}Y8>bCQeKg 8,oEtX}2`1(sM+N*qWV n 4a6=w::PY&h(}_$?T=GpXj\Tik^;yJ!mW/9M2jW"=ofrmYRXP~o#$;vI$|*#o\ +T)Q.k"-o&#^#"f,DLR /&eh/FBHM $`d@+F}`Q-V=F}$%m'lhR$U9?UbX>pd,B.6>\S~r~| qq V$f.JT_8fqa/*gE03z*.5;Fqq0A&h\j>7Qxw$i3D=8&T-WT BtoQTj7bX[Mbfi#.5=odYR=  6*^Zgy}nmyItNW XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Uubngstroms)-!* FORM = C* form of spectrum data-* SPEC = R4 spectrum data-H------------------------------------------------------------------------:Module: LOADSPEC_TAB ... load spectrum from IRAF .TAB fileH------------------------------------------------------------------------; SUBROUTINE LOADSPEC_TAB( NWAVE, WAVE, SPEC, FORM, SOURCE )o*r0* Loads spectrum data from an IRAF table (.TAB).*CB* Wavelengths are loaded from the column named WAVELENGTH, or from,* column 1 if no column is named WAVELENGTH.@* Spectrum data is loaded from the specified column name if any,D* or from the column named FLUX if present, otherwise from column 2.* Null data are skipped.I* FORM of spectrum data taken from the units of the spectrum data column.-*-* Input:2* NWAVE = I4 maximum allowed number of data values)* SOURCE = C* name of STSDAS table|column-%* Examples: 'WFPCDIR:WFPC_F889N.TAB'-(* 'WFPCDIR:WFPC_F889N.TAB|THROUGHPUT' * Output: .* NWAVE = I4 actual number of data values read+* WAVE = R4 wavelength values from column 1:/* SPEC = R4 spectrum data from specified columnO"* FORM = C* form of spectrum dataH------------------------------------------------------------------------AModule: LOADSPEC_TBH -- load spectrum from an SDAS .TBH,.TBD fileH------------------------------------------------------------------------; SUBROUTINE LOADSPEC_TBH( NWAVE, WAVE, SPEC, FORM, SOURCE )e*l)* Loads spectrum data from an SDAS table.-K* Wavelengths from column 1, throughputs from specified coOˢ0 XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U|elumn (default=2).S*,* Input:2* NWAVE = I4 maximum allowed number of data values'* SOURCE = C* name of SDAS table|columnu9* Examples: 'AB79STDS.TBH|HD19445', 'TEST|2', 'TEST.TBH'e * Output:n.* NWAVE = I4 actual number of data values read+* WAVE = R4 wavelength values from column 1 !* FORM = C* form of spectrum datad/* SPEC = R4 spectrum data from specified column-H------------------------------------------------------------------------<Module: LOADSPEC_TBL -- load spectrum from a Midas .TBL fileH------------------------------------------------------------------------; SUBROUTINE LOADSPEC_TBL( NWAVE, WAVE, SPEC, FORM, SOURCE )-*-)* Loads spectrum data from a MIDAS table.-K* Wavelengths from column 1, throughputs from specified column (default=2).-*-* Input:2* NWAVE = I4 maximum allowed number of data values(* SOURCE = C* name of MIDAS table|column9* Examples: 'AB79STDS.TBL|HD19445', 'TEST|2', 'TEST.TBL'A * Output:n.* NWAVE = I4 actual number of data values read+* WAVE = R4 wavelength values from column 1m!* FORM = C* form of spectrum dataT/* SPEC = R4 spectrum data from specified column-H------------------------------------------------------------------------1Module: LOADSPHOT -- load spectro-photometry data-H------------------------------------------------------------------------8 SUBROUTINE LOADSPHOT( NWAVE, WAVE, DAT, SIG, FWHM, # FORM, MODE, STAR, FILE )u*E* Spectro-photometry data are loaded from ASCII file or STSDAS table.w*n * Input:v2* Pw XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UhNWAVE = I4 Maximum allowed number of data points-* FILE = C* disk FILENAME or TABLE.TAB|COLUMNd,* (terminal interaction occurs if FILE=' ') * Output:5* NWAVE = I4 Number of data points (0 if none loaded)#* WAVE = R4 Wavelengths (Angstroms)* DAT = R* spectrum data/* SIG = R* 1-sigma uncertainty in spectrum data3* FWHM = R* resolution (full-width at half-maximum)-!* FORM = C* form of spectrum data-* MODE = C* observing mode* STAR = C* star nameP0* FILE = C* file name (if changed interactively)H------------------------------------------------------------------------DModule: LOADSPHOT_DAT -- load spectro-photometry data from .DAT fileH------------------------------------------------------------------------< SUBROUTINE LOADSPHOT_DAT( NWAVE, WAVE, DAT, SIG, FWHM, # FORM, MODE, STAR, FILE ) *c5* Spectro-photometry data are loaded from ASCII file.C*A * Input: 2* NWAVE = I4 Maximum allowed number of data points-* FILE = C* disk FILENAME or TABLE.TAB|COLUMN-,* (terminal interaction occurs if FILE=' ') * Output:5* NWAVE = I4 Number of data points (0 if none loaded)-#* WAVE = R4 Wavelengths (Angstroms)-* DAT = R* spectrum data/* SIG = R* 1-sigma uncertainty in spectrum datae3* FWHM = R* resolution (full-width at half-maximum)i!* FORM = C* form of spectrum dataa* MODE = C* observing mode* STAR = C* star names0* FILE = C* file name (if changed interactively)H------------------------------------------------------------------------EModule: LOADSPHOT_TAB ..Q 0)5* (if NCOL < 0, then only column -NCOL is read)** NROW = I4 Maximum allowed number of rows * Output:>* NAME = C* Name of Rjx XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U-ndisk file (only if selected interactively)4* NROW = I4 Number of data points (0 if none loaded)* C1(NROW)= R4 first columnE* C2(NROW)= R4 second column* ...n* C20(NROW)= R4 ninth columnH------------------------------------------------------------------------5Module: LOCASE -- translate text string to lower case H------------------------------------------------------------------------% SUBROUTINE LOCASE( TEXTOUT, TEXTIN )-H------------------------------------------------------------------------.Module: LOOKUP -- inverse linear interpolationH------------------------------------------------------------------------8 SUBROUTINE LOOKUP( NPIX, DATA, TARGET, ILO, IHI, PART )* =* Inverse linear interpolator. Finds ILO, IHI, PART such thatm5* TARGET = DATA(ILO) * (1.-PART) + DATA(IHI) * PARTt*;* This version uses safe but slow method of one-pixel stepsB* * Input:* NPIX = Number of data points** DATA = Data values ( must be monotonic )* TARGET = Target valuet * Output: * ILO = Low pixel * IHI = Hi pixel)* PART = fraction (0-1) for interpolationH------------------------------------------------------------------------.Module: MERGEWAVE -- merge two wavelength setsH------------------------------------------------------------------------3 SUBROUTINE MERGEWAVE( N1, W1, N2, W2, NOUT, WOUT )N*O* merges two wavelength sets*U* Input:0* N1 = number of wavelengths of wavelength set 1* W1(N1) = wavelength set 1h0* N2 = number of wavelengths of wavelength sS76A XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UOqet 2* W2(N2) = wavelength set 2l)* NOUT = max number of output wavelengthsa* Output%* NOUT = number of output wavelengthsM,* WOUT(NWOUT) = output merged wavelength setH------------------------------------------------------------------------*Module: OPHYD ... hydrogenic cross sectionH------------------------------------------------------------------------% FUNCTION OPHYD( WAVE, TEMP, Z )o>* bound-free plus free-free cross-section of a hydrogenic ion.?* Formulae are from Seaton (stimulated emission is omitted.!!!)W*,* input: * WAVE R4 wavelength (angstroms)* TEMP R4 Kelvin temperature,* Z R4 atomic number (1 = HI,2 = HeII, etc.) * output:l+* OPHYD R4 cross section per ion (cm^2/ion)lH------------------------------------------------------------------------Module: PARSE ... string parsertH------------------------------------------------------------------------* LOGICAL FUNCTION PARSE( STRING, KEYWORD )* input: * STRING C*w * KEYWORD C* * output:-/* PARSE L .true. if STRING's first word matches-* KEYWORD's first wordH------------------------------------------------------------------------EModule: PHOTFORM ... convert the form of photometric data and errors.DH------------------------------------------------------------------------; SUBROUTINE PHOTFORM( MODE, NDATA, DATOLD, SIGOLD, FORMOLD,m! # DATNEW, SIGNEW, FORMNEW ) *p* Input:* MODE = C* passband#* NDATA = I4 number of data pointss* DATOLD = R4 old data$* SIGOLD = R4 old 1-sigma erroT`' XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UfCtr bars5* FORMOLD = C* form of old data on input (e.g. 'FNU')m&* (' ' for interactive identification)1* FORMNEW = C* form of spectrum desired on output !* (' ' for interactive selection)p * Output:m1* DATNEW = R4 output data transformed to new form-1* SIGNEW = R4 output data transformed to new formO<* FORMNEW = C* form of output data (if interaction occurred)*dC* Data and error bars are converted among any of the standard forms * supported by CHECKFORMH------------------------------------------------------------------------+Module: PIVLAM -- passband pivot wavelength H------------------------------------------------------------------------% FUNCTION PIVLAM( NWAVE, WAVE, FILT )e*f)* Computes pivot wavelength of a passband-*-B* pivlam = Sqrt( Int lam FILT(lam) dlam / Int FILT(lam) dlam/lam )H* This wavelength should be used to convert fluxes between fnu and flam.*-* Input:!* NWAVE I4 number of wavelengthsO* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 passband * Output: * PIVLAM R4 pivot wavelengthhH------------------------------------------------------------------------$Module: PLOTBAND ... plot bandpassesH------------------------------------------------------------------------- SUBROUTINE PLOTBAND( NWAVE, WAVE, MODEFILE )r* * input:!* NWAVE I4 number of wavelengths * WAVE() R4 wavelengths(* MODEFILE C* passband filename or @listH------------------------------------------------------------------------5Module: PLOTRATIO ... observed / predicted rUwB XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Uwatio plotuH------------------------------------------------------------------------- SUBROUTINE PLOTRATIO( NWAVE, WAVE, SPECFILE,-1 # NEBMV, EBMV1, EBMV2, PFILE, SPFILE, FORM ) ** input:!* NWAVE I4 number of wavelengths* WAVE R4 wavelengths$* SPECFILE C* spectrum file or @list!* NEBMV I4 number of extinctionsu* EBMV1 R4 first E(B-V)* EBMV2 R4 final E(B-V)$* PFILE C* photometry file or @list-* SPFILE C* spectro-photometry file or @listq* FORM C* form of datatH------------------------------------------------------------------------"Module: PLOTSPEC ... spectrum plotH------------------------------------------------------------------------6 SUBROUTINE PLOTSPEC( NWAVE, WAVE, MODEFILE, SPECFILE,6 # NEBMV, EBMV1, EBMV2, PFILE, SPFILE, FORM, CM2 )*O* input:!* NWAVE I4 number of wavelengths* WAVE R4 wavelengths$* MODEFILE C* passband file or @list$* SPECFILE C* spectrum file or @list!* NEBMV I4 number of extinctions * EBMV1 R4 first E(B-V)* EBMV2 R4 final E(B-V)$* PFILE C* photometry file or @list,* SPFILE C* spectrophotometry file or @list* FORM C* form of datad* CM2 R4 telescope area (cm^2)aH------------------------------------------------------------------------4Module: PROLOG_IRAF ... initialize stand-alone IRAF.H------------------------------------------------------------------------ SUBROUTINE PROLOG_IRAF-.* Calls UUPRLG on first call, otherwise no-op.H------------------------------------------------------------------V ʋ XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U_0z------<Module: PTRANS ... plot photometric transformation diagramsH------------------------------------------------------------------------ SUBROUTINE PTRANS*t=* PTRANS plots photometric transformation diagrams, including 4* color-mag, 2-color, flux ratio or 2-flux diagrams.N* The X and Y axes are independently specified by the passband or color index,L* and the form of data (STMAG,ABMAG,VEGAMAG,FNU,FLAM,MJY,JY,PHOTNU,PHOTLAM)./* Lists of spectra may be selected by @file.lismH------------------------------------------------------------------------<Module: RATE -- passband + spectrum count rate (cnts/s/cm^2)H------------------------------------------------------------------------/ FUNCTION RATE( NWAVE, WAVE, FILT, SPEC, FORM ),*RG* Computes the count rate produced by given spectrum in given passband.."* Output is counts / second / cm^2*o* Input:!* NWAVE I4 number of wavelengthsA* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 passbandn* SPEC(NWAVE) R4 spectrums&* FORM C* form of input spectrum data*a * Output:c&* RATE R4 count rate (counts/s/cm^2)*mC* The count rate is given for various spectrum representations by :*-A* FLAM RATE = [ Sum FILT(lam) * SPEC(lam) * dlam * lam ] / (hc)-:* FNU = [ Sum FILT(lam) * SPEC(lam) * dlam / lam ] / h:* LAMFLAM = [ Sum FILT(lam) * SPEC(lam) * dlam ] / (hc)8* NUFNU = [ Sum FILT(lam) * SPEC(lam) * dlam ] / (hc)3* PHOTLAM = [ Sum FILT(lam) * SPEC(lam) * dlam ]o>* PHOTNU = [ Sum FILT(lam) * SPEC(lam) * dlam /W< XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U©} lam^2 ] * c+* COUNTS = [ Sum FILT(lam) * SPEC(lam) ]d6* OBMAG = [ Sum FILT(lam) * 10.**(-0.4*SPEC(lam)) ]0* ABMAG convert to FNU then calculate as above1* STMAG convert to FLAM then calculate as aboveg3* VEGAMAG convert to FLAM then calculate as aboveH------------------------------------------------------------------------0Module: RMSLAM -- compute passband rms bandwidthH------------------------------------------------------------------------% FUNCTION RMSLAM( NWAVE, WAVE, FILT )R*a7* Compute the root-mean-square bandwidth of a passband.M6* The definition used is that from the WF/PC handbook,=* which corresponds to the standard deviation of the passband-* as a function of ln{lam}.-*-* Input: * NWAVE I4 number of wavelengths1* WAVE R4(NWAVE) wavelengths (positive,ascending)-)* FILT R4(NWAVE) passband data (positive)- * Output:S* RMSLAM R4 rms bandwidthV*WB* The rms bandwidth is defined in the WF/PC instrument handbook as,* rmslam^2 = barlam^2 <[ln{lam/barlam}]^2> ,1* where barlam is the bar wavelength, defined by s5* Schneider, Gunn and Hoessel ( 1983 ApJ 264,337 ) asS* barlam = exp{} , 9* and < > denotes an average over the passband in ln{lam}sG* = ( Int P{lam} X{lam} dlam/lam ) / ( Int P{lam} dlam/lam ) .-** Note that the dimensionless bandwidth is-* (rmslam/barlam)^2 = < [ln{ lam/barlam}]^2 >T2* = < [ln{lam} - ]^2 >,1* = - ^2 .-@* The latter formula is used in the nuX#}m'4lPw6]-)c2AY&qa3&b"9a0-76*_ 5mgWS\PGI@eKjU;K9w^,[6"?c_8'VQ "$b=7JQi\M3D;vwSbK F~B,u+o a$&{~~IL$@'ZO D=fum,R%_z( n#{(W ~Y `&bP*~HKQGG_\YU;yqh@3tRU,2Kz32mV=6vr+meK=&?ld5bF6|e.JQ$T,~On<AYM<)@%A1 _/j@X_%.Zz\z3|r[H Nd>&vlfr)I,OA"w[Pq*J NnZ`_bCxc Y~o-N9kU]AJg^ypt&5lRM GwR} LlW^ uU|t's7TXf{? rp5QL(P{ n@~p=qiBtsGpz#r3aP2:&*I@oj(Cd)>Qwe96-,41~<;tDe(r^ +`:9GoQl(V#/R $ #$v'aii]CGLB)e4@)c{I<atnx}mJR}xT@^S"e1g=PF"<8)*6+Ts =D35zX6 #1^QQG$D7t'.7)Qj} Q\ =BxhY_^"u5s RA^xmB T.;[NmC1QB7_npSvh#$/]Ls]' g\JCy:I1>9n?^VK.fK9$:ow& # HFQKo^ ,k5LTC A`7h,`:I406b 2o4 Mz U7C-M&|g" Ja7;?r)gD NH9!l;:zF 4(&KN]$a Q$@GAn56uBN1-ZeJ9a%s1Loj0LR_Z[d. sZGA 5Op;E|o j[Y_]>B$nyLJ3yqZU[U#Oo$ g\m:.JE`'e1zqFidRNo / V!sC] D0 HK9-Zkr/2I}Zs |lm'+}E_^%{D@,wkP" `#M27\K$0*]UL 2:.TXZWQYwRXvB/ ]jdLO0P- -"3$Y~WPfU} ;E% ]p2kTjR/i %/k ,igt"y 4M 2${'Gh;61Cvyzn|q`9LSQv5u ,|9dO1.n}y eT` )?}|np_:m ~pqA(K(R8a]1'jTR~ 7 Q li8ANC] C)zFEg&PD/r]P1rY- su@'4; .Fh5S>%mR'bre@L-d7=)bb+bv-Uf"w09~ p7E#w 6XqMhbs(JRbn>l0XKL]do2:q`;-iqqYyn% XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Unmerical calculation below.H------------------------------------------------------------------------0Module: SELECT -- select from a list of commandsH------------------------------------------------------------------------2 SUBROUTINE SELECT( PROMPT, NLIST, NAME, NSELECT )*A3* Interactive selection of a name from a fixed listm*t* Input:4* PROMPT = Character string to be used in the prompt%* NLIST = Number of names in the list-;* NAME = List of names from which a selection is to be madeo * Output:L4* NSELECT = The sequence number of the selected name* = 0 if no name was selected. H-------------------------------------------------------------------------Module: SHELLSORTI -- sort a list of integersaH------------------------------------------------------------------------) SUBROUTINE SHELLSORTI(NDATA, IDATA, KEY)49 MIKE IRWIN ROUTINE SUBSTANTIALLY MODIFIED BY T.R. MARSH  SHELL SORT ROUTINE:' ARGUMENTS ARE COMPATIBLE WITH ORIGINALf "BUBSORT" ROUTINE OF KDH. INPUT:h NDATA = NUMBER OF DATA VALUES IDATA = DATA VALUES OUTPUT:? KEY = KEY TO SORTED DATA VALUES (I.E. IDATA(KEY(I)) ASCENDS)-H------------------------------------------------------------------------?Module: SPAWN -- send a DCL command to the VMS operating system-H------------------------------------------------------------------------ SUBROUTINE SPAWN(STRING)d5 SENDS A ONE-LINE DCL COMMAND STRING USING LIB$SPAWNdH------------------------------------------------------------------------OZO@ XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UZModule: SPCALC ... calculate synthetic photometry for a range of modes-spectra H------------------------------------------------------------------------' SUBROUTINE SPCALC( MODEFILE, SPECFILE, ( # NEBMV, EBMV1, EBMV2, FORM, CM2 )*uG* compute synthetic data for one or many passband-spectrum combinations *R* input:%* MODEFILE C* name of observing mode,:,* or @filename for many modes from a file * SPECFILE C* name of spectrum, .* or @filename for many spectra from a file"* NEBMV I4 number of E(B-V) values* EBMV1 R5 first E(B-V) valuem* EBMV2 R4 last E(B-V) value 1* FORM C* form of synthetic data to be calculated-4* CM2 R4 area of telescope (optional for some FORMs) * output:e!* on terminal or into a disk filemH------------------------------------------------------------------------3Module: SPECFORM ... convert the form of a spectrumVH------------------------------------------------------------------------E SUBROUTINE SPECFORM( NWAVE, WAVE, SPECIN, INFORM, SPECOUT, OUTFORM )a* Input:"* NWAVE = I4 number of wavelengths,* WAVE = R4 pivot wavelengths (in Angstroms)!* SPECIN = R4 input spectrum datae9* INFORM = C* form of spectrum data on input (e.g. 'FNU')n&* (' ' for interactive identification)1* OUTFORM = C* form of spectrum desired on output !* (' ' for interactive selection)t * Output:=#* SPECOUT = R4 output spectrum datamE* OUTFORM = C* form of output spectrum data (if interaction occurred)-*-<* Spectra may be converted among any of the following form[? XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UWs:* Flux densities:-* FLAM = ergs cm-2 s-1 A-1* FNU = ergs cm-2 s-1 Hz-1 * JY = 10^-23 ergs cm-2 s-1 Hz-1!* MJY = 10^-26 ergs cm-2 s-1 Hz-1- * PHOTNU = photons cm-2 s-1 Hz-1 * PHOTLAM = photons cm-2 s-1 A-1E* COUNTS = photons cm-2 s-1 pixel-1 (requires monotonic wavelengths) * Magnitude systems:"* STMAG = -2.5 log( FLAM ) - 21.10!* ABMAG = -2.5 log( FNU ) - 48.60 #* VEGAMAG = -2.5 log( f / f(vega) )EH------------------------------------------------------------------------GModule: SPECFORM1 -- convert form of spectrum data (except for VEGAMAG)rH------------------------------------------------------------------------F SUBROUTINE SPECFORM1( NWAVE, WAVE, SPECIN, INFORM, SPECOUT, OUTFORM )* Input:"* NWAVE = I4 number of wavelengths,* WAVE = R4 pivot wavelengths (in Angstroms)!* SPECIN = R4 input spectrum dataR9* INFORM = C* form of spectrum data on input (e.g. 'FNU'),&* (' ' for interactive identification)#* SPECOUT = R4 output spectrum datae1* OUTFORM = C* form of spectrum desired on outputx!* (' ' for interactive selection) * Output: #* SPECOUT = R4 output spectrum data +* OUTFORM = C* form of output spectrum data *t<* Spectra may be converted among any of the following forms:* Flux densities:g* FLAM = ergs cm-2 s-1 A-1* FNU = ergs cm-2 s-1 Hz-1 * JY = 10^-23 ergs cm-2 s-1 Hz-1!* MJY = 10^-26 ergs cm-2 s-1 Hz-1d * PHOTNU = photons cm-2 s-1 Hz-1 * PHOTLAM = photons cm-2 s-1 A-1C* COUNTS = photons cm-2 s-1 pixel-1 (assumes monotonic wavelengths)h* Magnitude sy\Nv XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Ustems:"* STMAG = -2.5 log( FLAM ) - 21.10!* ABMAG = -2.5 log( FNU ) - 48.60-@* VEGAMAG = -2.5 log( f / f(vega) ) NOT HANDLED IN THIS ROUTINE!H------------------------------------------------------------------------PModule: SPECSCALE ... rescale reference spectrum to fit spectro-photometric dataH------------------------------------------------------------------------6 SUBROUTINE SPECSCALE( REFSPEC, PFILE, SPFILE, SCALE )*f* input:** REFSPEC C* reference spectrum descriptor#* PFILE C* photometry file or @listr+* SPFILE C* spectrophotometry file or @liste * output:o%* SCALE R4 scale factor (0 if failed)aH------------------------------------------------------------------------MModule: SPHOTFORM ... convert the form of spectro-photometry data and errors.OH------------------------------------------------------------------------< SUBROUTINE SPHOTFORM( NWAVE, WAVE, DATOLD, SIGOLD, FORMOLD,! # DATNEW, SIGNEW, FORMNEW )-*-* Input:"* NWAVE = I4 number of wavelengths,* WAVE = R4 pivot wavelengths (in Angstroms)* DATOLD = R4 old data$* SIGOLD = R4 old 1-sigma error bars5* FORMOLD = C* form of old data on input (e.g. 'FNU')T&* (' ' for interactive identification)1* FORMNEW = C* form of spectrum desired on outputt!* (' ' for interactive selection)B * Output:I1* DATNEW = R4 output data transformed to new form 1* SIGNEW = R4 output data transformed to new formM<* FORMNEW = C* form of output data (if interaction occurred)*WD* Data and error bars are converted among any of]Q{% XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UV the standard forms:-* FLAM, FNU, JY, MJY, PHOTNU, PHOTLAM, COUNTS * STMAG, ABMAG, VEGAMAGnH------------------------------------------------------------------------6Module: SRCHGRF -- trace path through instrument graphH------------------------------------------------------------------------, SUBROUTINE SRCHGRF( NKEY, MODEKEY, KEYUSED,2 * NLINK, LINKEY, NODE1, NODE2, IDGRF, IRANK, * NLIST, LIST, IER )* ,* Traces a path through an instrument graph.*-C* MODEKEY(NKEY) is a list of keywords specifying an observing mode.,E* The keywords are used to trace a path through the instrument graph.#>* This graph consists of segments or links that correspond to 0* optical components identified by IDGRF(NLINK).@* The path begins at the smallest-numbered node, and can proceedJ* from node NODE1(I) to node NODE2(I) if the keyword LINKEY(I) is present.D* IRANK(NLINK) is a ranking index such that NODE1(IRANK(I)) ascends.7* The main result is a list LIST(NLIST) that identifiesE:* the optical components that were present along the path.C* KEYUSED indicates which keywords were used, and IER flags errors.r*c* Input:5* NKEY = number of keywords in abbreviated mode speci4* MODEKEY(NKEY) = list of keywords specifying a mode1* IER > 0 enables checking for overspecification-*r2* NLINK = number of links in the instrument graph* LINKEY(NLINK) = keywords* NODE1(NLINK) = entry nodes* NODE2(NLINK) = exit nodes,1* IDGRF(NLINK) = component identification numbers-5* IRANK(NLINK) = NODE1^hL XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U(IRANK(I)) is assumed to ascend *e@* NLIST = maximum allowed number of components in full mode spec*- * Output:-1* NLIST = number of components in full mode spec 8* LIST(NLIST) = list of component identification numbers(* KEYUSED(NKEY) = .true. if key was used* IER = 0 no errors* = 1 dimension errort* = 2 over-specification* = 3 under-specificatione* = 4 list overflowH------------------------------------------------------------------------IModule: STIMCOR ... evaluates stimulated emission factor 1 - exp(-hnu/kT) H------------------------------------------------------------------------$ FUNCTION STIMCOR( WAVE, TEMP )*-* input: * WAVE R4 wavelength (Angstroms)* TEMP R4 Kelvin temperature * output:-* STIMCOR R4 (1 - exp(-hnu/kT))-H------------------------------------------------------------------------7Module: SUMFILT -- integrate P(lambda) lambda^N dlambdasH------------------------------------------------------------------------, FUNCTION SUMFILT( NWAVE, WAVE, NPOW, FILT )*e&* computes numerical passband integral*g* NWAVE2* SUMFILT = Sum [ FILT(I) WAVE(I)**NPOW DWAVE(I) ]* I=1a*e* Input:!* NWAVE I4 number of wavelengths-* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 filter * NPOW I4 wavelength exponentH------------------------------------------------------------------------SModule: SUMFILTSPEC -- integrate passband(lambda) spectrum(lambda) lambda^N dlambdadH----------------------------------------------_U XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U%%--------------------------6 FUNCTION SUMFILTSPEC( NWAVE, WAVE, NPOW, FILT, SPEC )*R1* computes numerical passband * spectrum integral2*H* NWAVE:* SUMFILT = Sum [ FILT(I) SPEC(I) WAVE(I)**NPOW DWAVE(I) ]* I=1-*-* Input:!* NWAVE I4 number of wavelengths-* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 filter-* SPEC(NWAVE) R4 spectrum-* NPOW I4 wavelength exponentH------------------------------------------------------------------------(Module: SYNPHOT ... synthetic photometerH------------------------------------------------------------------------9 INTEGER*4 FUNCTION SYNPHOT( RESULT, FORM, MODE, SOURCE )T*MB* High-level user interface to XCAL synthetic photometry routines.*-I* Usage: CALL SYHPHOT( ... ) or INTEGER*4 SYNPHOT; IFAIL = SYNPHOT( ... )T* Input:9* FORM C* what form of synthetic data is to be calculated 9* Options using only the passband as specified by MODE :I>* PIVLAM . pivot wavelength (for exact FNU-FLAM conversions)4* BARLAM . bar wavelength (see WFPC Inst.Handbook)* AVGLAM . average wavelengthf* RMSLAM . rms bandwidth%* FWHMLAM . sqrt(8*alog(2)) * RMSLAMi2* RESET .. interactive changes to wavelength setH* Options using passband and spectrum, as specified by MODE and SOURCE:+* COUNTS . detected photons / s / cm / cmO<* EFFLAM . effective wavelength (mean of detected photons)'* PHOTNU . photons / s / cm / cm / Hz -* PHOTLAM . photons / s / cm / cm / AngstromK$* FNU . ergs / s / cm / cm / Hz** FL`vʲI XCAL29.BCK%gOk[XCAL]XCAL.DOC;41UCOAM . ergs / s / cm / cm / Angstrom'* ABMAG . -2.5 alog10( FNU ) - 48.60n(* STMAG . -2.5 alog10( FLAM ) - 21.100* VEGAMAG . magnitude relative to Vega spectrum* JY . 10^23 FNU* MJY . 10^26 FNU:* MODE C* specifies the passband, i.e. the observing mode:* (see CALCBAND for options)l?* MODE1 - MODE2 . gives a color index (if FORM is a MAG )e4* or flux ratio (if FORM is not a MAG )D* SOURCE C* specifies the source spectrum (see CALCSPEC for options) * Output::* RESULT R4 result of the synthetic photometry calculation5* SYNPHOT I4 error code: 0 if successful, 1 otherwisee*L* Planned extensions:s;* put in some smarts on wavelength scales to avoid GENWAVE.-H------------------------------------------------------------------------,Module: TRNLOG ... translate a logical name.H------------------------------------------------------------------------ SUBROUTINE TRNLOG( NAME )*-)* Translate logical name using SYS$TRNLOGAH------------------------------------------------------------------------PModule: UNIT -- compute passband inverse sensitivity (stimulus for 1 cnt/s/cm^2)H------------------------------------------------------------------------) FUNCTION UNIT( NWAVE, WAVE, FILT, FORM )w* Input:!* NWAVE I4 number of wavelengthsi* WAVE(NWAVE) R4 wavelengths* FILT(NWAVE) R4 passband 4* FORM C* determines the form of stimulus requested * Output:@* UNIT R4 the unit stimulus.o*rB* Computes the stimulus that is needed to produce a una i XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Uit response 0* of one count per second per square centimeter.?* This is a measure of the inverse sensitivity of the passband.-*-<* The unit stimulus is given in various representations by :*C1* FLAM UNIT = hc / [ Sum FILT(lam) lam * dlam ]B-* FNU = h / [ Sum FILT(lam) dlam / lam ]n(* NUFNU = hc / [ Sum FILT(lam) dlam ]** LAMFLAM = hc / [ Sum FILT(lam) dlam ]** PHOTLAM = 1 / [ Sum FILT(lam) dlam ]5* PHOTNU = 1 / [ Sum FILT(lam) dlam * c / lam^2 ] $* COUNTS = 1 / [ Sum FILT(lam) ]2* OBMAG compute UNIT(COUNTS) and convert to Mags0* ABMAG compute UNIT(FNU) and convert to ABMAG1* STMAG compute UNIT(FLAM) and convert to STMAG** VEGAMAG compute 1 / count rate on Vega2* JY,MJY compute UNIT(FNU) and convert to JY,MJYH------------------------------------------------------------------------5Module: UPCASE -- translate text string to upper caseH------------------------------------------------------------------------% SUBROUTINE UPCASE( TEXTIN, TEXTOUT )-H------------------------------------------------------------------------AModule: VACTOAIR ... convert vacuum wavelength to air wavelengthH------------------------------------------------------------------------" SUBROUTINE VACTOAIR( WVAC, WAIR )*x* Input:'* WVAC R4 vacuum wavelength (Angstroms)i * Output:y$* WAIR R4 air wavelength (Angstroms)*,H------------------------------------------------------------------------BModule: VMSFILE -- isolate VMS file specification from text stringb XCAL29.BCK%gOk[XCAL]XCAL.DOC;41Uz<H------------------------------------------------------------------------# SUBROUTINE VMSFILE( FILE, L1, L2 )s*c0* Isolates file name from VMS file specification*-* Input:* FILE = VMS file specification * Output:,-* L1,L2 = Inclusive index limits of file namerH------------------------------------------------------------------------4Module: VSHIFT -- apply velocity shift to a spectrumH------------------------------------------------------------------------, SUBROUTINE VSHIFT( NWAVE, WAVE, SPEC, VEL )* '* Applies velocity shift to a spectrum.a*(* Input:* NWAVE = number of wavelengthse * WAVE = wavelengths (Angstroms)* SPEC = spectrum * VEL = velocity shift (km/s)P * Output:l* SPEC = shifted spectrum H-------------------------------------------------------------------------Module: WAVEFORM ... convert wavelength units[H------------------------------------------------------------------------? SUBROUTINE WAVEFORM( NWAVE, WAVEIN, INFORM, WAVEOUT, OUTFORM ) * Input:"* NWAVE = I4 number of wavelengths* WAVEIN = R4 input wavelengths[!* INFORM = C* form of wavelengthsm&* (' ' for interactive identification)4* OUTFORM = C* form of wavelengths desired on output!* (' ' for interactive selection)o * Output:c!* WAVEOUT = R4 output wavelengths-C* OUTFORM = C* form of output wavelengths (if interaction occurred) *L@* Wavelengths may be converted among any of the following forms:** LAM, ANGSTROM, NM, MICRON, MM, CM, METER* NU, HZ, KHZ, MHZ, GHZV* EV, KEV, Mcb: emX }0lLF]D H/(^:)EaT?wAd D172kv_nw30xC5f+-"$47kBs X7XC6$Zr[.]=-JW:jM`PMj~U0?%1;| e:{RHb+@3gO/@a2PAM` VoRq||>-mB9R+9!YD)r1)ST 3f,[%cROr#:9DR\z?% #60_ [JGS ]vZt+T6qYG9nkS_I+ !z}I}=1ACwQx/@ X]) :2$]MjOJC2a-.md}7 y5= f 'P(#a}1cgv4pp]|h[>8&N&6 cAWqrn%A6*JD _U->+ 7b)][%)-)<^Oo|L`>uD+=W^@g]H*y+X3a6 96[7(azL=~3XbXMr/c6G=cQLS E%s7vfa9:v{&vj^>x>R^IJ N\-n=LT=fx'{zg8@8k:q;$yU ,'L2x+5|CvvE`FBG{^e%!t&wcB%/YC:7Nda~1@4 -Gu#COe7Iig`;M{>@gH)yp(#"*IM\c7,.NR i6UEwqmzgA $EjE2Fy0m!D$!{aVXJYzT^!Ql#+khyQjeS_]_M?T^I|39;4Fnpu0l^*L:t{h hY;zwsX/ 4$C`X69Tn 5X$(][R$nxnYI&)7GDmug.DP4'==-5 g/HAA`z-v5loE-h!8X~OHeLqr]eR6Ud rhz9u'GH4H>_2&L})0+LXO7cmc`y;$ )?#33^(bX2WCsC1 f*Z0W$T`|(;{wF}!|MaQ6]xl7)$f'X*VE~LVf`>DOPgd^y7)z'oO?9U @PXEw!=iezds.KX**?*HrKf 18:<;{2}8JzJYy;-D%nP'nhU#M\Ai8A v 2/j|]uCIKEWvLSg$@~;EZ;2">cR@%4VFCiPO) Q r &Uv*?AUoxnT0 L/es.VPJ8bj AGth`8 O| l?YIBk=<<Gi@m#I2I^wu@UPKX-[5~ Aw + X`I}6g ;eOs| V@b+j7e].0"%Z}MjGPcT>c/s#AFC\3pP@:F~$-]$:P|*(;hU6 |ueg|%u+(y<7QN*[)sS?QN;[IimUPn4fdg XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U1EV, GEV, TEV4* and Logs of the above, e.g. LOGLAM, LOGNU, LOGHZ.H------------------------------------------------------------------------4Module: WORD1 -- isolate first word of a text stringH------------------------------------------------------------------------# SUBROUTINE WORD1( STRING, L1, L2 )g*0* Isolates the first word of a character string *S* Input:* STRING = character string * Output:t.* L1,L2 = Inclusive index limits of first wordH------------------------------------------------------------------------:Module: WORD2 -- isolate first expression of a text stringH------------------------------------------------------------------------# SUBROUTINE WORD2( STRING, L1, L2 )l*>4* Isolates first "expression" of a character string,/* where the "expression" may be enclosed in (). ** Input:* STRING = character string} * Output: 4* L1,L2 = Inclusive index limits of first expressionH-------------------------------------------------------------------------Module: WSPEC ... write spectra to disk files-H------------------------------------------------------------------------? SUBROUTINE WSPEC( NWAVE, WAVE, SPECFILE, FORM, MODEFILE, CM2 )-*-* input:!* NWAVE I4 number of wavelengthsS* WAVE R4 wavelengths** SPECFILE C* spectrum descriptor or @list* FORM C* form of dataa)* these two used only if FORM is 'COUNTS'a** MODEFILE C* passband descriptor or @list* CM2 R4 telescope area (cm^2)H--------------------------------------------------------e$ XCAL29.BCK%gOk[XCAL]XCAL.DOC;41U0----------------0Module: WSPEC1 ... writes spectrum to disk fileH------------------------------------------------------------------------; SUBROUTINE WSPEC1( FILE, NWAVE, WAVE, SPEC, FORM, SOURCE )t*l* input::* FILE C* output filename or ' ' for interactive selection * NWAVE I4 number of wavelengths* WAVE R4(NWAVE) wavelengths* SPEC R4(NWAVE) spectrumU* FORM C* form of spectrum dataH#* SOURCE C* source of spectrum dataA*C * output:I%* FILE C* output filename, if changed. INPUT:h N*[XCAL]XCAL.FOR;111+,}./R 4N-Ok0123KPWO56* 7#= 891n LGRHJ+C*XCAL ... interactive synthetic photometerC+ PROGRAM XCAL*C* Interactive control program for synthetic photometry applications* with the XCAL subroutines.*<* Synthetic Photometry: The basic subroutine SYNPHOT is usedF* to compute predicted count rates, magnitudes, fluxes, color indices, * and flux ratios for passbands.E* Plotting: photometric transformations, passband sensitivity curves,;* model spectra, comparison of observed and predicted data.H* Fitting: limited capability is if'  XCAL29.BCK}Ok[XCAL]XCAL.FOR;111Nmplemented for fitting spectra to data*@* Passbands: associated databases provide access to the official@* HST passbands from the CDBS database, standard Johnson-Cousins* and user-defined passbands.K* Spectra: a generalized spectrum calculator CALCSPEC permits generation ofF* quite complicated composite spectra, with convenient renormalizationC* of the individual spectral elements. See CALCSPEC for more info.B* Associated databases provide access to spectra from the Bruzual,:* Gunn-Stryker and Jacobi-Hunter-Christian atlases, a new1* Buser-Kurucz atlas of model atmosphere spectra.<* Blackbody spectra, Seaton's interstellar extinction curve,H* spectrum arithmetic and convenient renormalization are also supported.C--* Jul 1988 Keith Horne @ STScI9* Aug 1988 Keith Horne @ STScI - verify requested spectra=* Feb 1989 KDH @ STScI - plotting of spectro-photometric data* - implement NONE option?* Mar 1989 KDH @ STScI - PLOTBAND, PLOTSPEC, PLOTRATIO, GRIDFIT * - PTRANS6* May 1989 KDH @ STScI - eliminate superfluous arrays.+* - change GRIDFIT to FITGRID, add FITSPEC* - confirm before quitting'* Jun 1989 KDH @ STScI - isolate SPCALCG* Jun 1989 KDH @ STScI - implement CHECKPHOT, eliminate extra variablesN* Jul 1989 KDH @ STScI - change PHOTPIX to COUNTS, more help, eliminate TYPE *"* Sep 1989 KDH @ STScI - add WSPEC,* Feb 1990 KDH @ STSCI - add VERBOSE command7* Aug 1991 KDH @ STScI - change NCHAR=65 to MAXCHAR=1002* Aug 1993 KDH @ STScI - change MAXCHAR=100 -> 256gÑ XCAL29.BCK}Ok[XCAL]XCAL.FOR;111N PARAMETER MAXCHAR=150( PARAMETER (MAXWAVE=30000) ! wavelengths REAL*4 WAVE(MAXWAVE)# PARAMETER MAXMODE=100 ! passbands CHARACTER*(MAXCHAR) MODEFILE& CHARACTER*(MAXCHAR) MODELIST(MAXMODE) CHARACTER*(MAXCHAR) MODE! PARAMETER MAXSPEC=100 ! spectra CHARACTER*(MAXCHAR) FITMODEL CHARACTER*(MAXCHAR) SPECFILE& CHARACTER*(MAXCHAR) SPECLIST(MAXSPEC) CHARACTER*10 FORM* PARAMETER MAXP=100 ! photometry datasets CHARACTER*(MAXCHAR) PFILE CHARACTER*(MAXCHAR) PLIST(MAXP)4 PARAMETER MAXSP = 100 ! spectro-photometry datasets CHARACTER*(MAXCHAR) SPFILE" CHARACTER*(MAXCHAR) SPLIST(MAXSP)" INTEGER*4 SYNPHOT ! XCAL control LOGICAL SILENCE/.TRUE./ COMMON/SILENCE/SILENCE PARAMETER MAXOPT=50 ! commands CHARACTER*75 OPTION(MAXOPT) CHARACTER*(MAXCHAR) REPLY CHARACTER*(MAXCHAR) FILE* introduction WRITE(*,*)E # ' _________________________________________________' WRITE(*,*)F # ' | XCAL - interactive synthetic photometry program |' WRITE(*,*)F # ' | for simulation of and model fitting to HST data |' WRITE(*,*)F # ' | |' WRITE(*,*)F # ' | Kindly direct questions and report problems to: |' WRITE(*,*)F # ' | Keith Horne (410-338-4964) |' WRITE(*,*)F # ' | STScI, 3700 San Martin Dr, Baltimore,MD 21218 |' WRITE(*,*)F # ' | SCIVAX::HORNE, HORNE@STSCI.EDU ht XCAL29.BCK}Ok[XCAL]XCAL.FOR;111N3 |' WRITE(*,*)F # ' | Acknowledgements appreciated. |' WRITE(*,*)E # ' -------------------------------------------------' * initialize WRITE(*,*)7 # 'A few preliminary questions to get started ...' * passbands< WRITE(*,'(A)') '$Will you need HST sensitivity data ? [Y] ' READ(*,'(A)') REPLY IF( REPLY.EQ. ' ' ) REPLY = 'Y' CALL UPCASE( REPLY, REPLY ) IF( REPLY.EQ.'Y' ) THEN MODEFILE = 'WFPC,F555W' FORM = 'COUNTS'5 WRITE(*,*) 'Ready to load the HST sensitivity data.' ELSE MODEFILE = 'fltdir:v' FORM = 'STMAG' END IF NMODE = 1 MODELIST(1) = MODEFILE) CALL CHECKBAND( NMODE, MODELIST, IFAIL ) IF( IFAIL.NE.0 ) THEN NMODE = 0 MODEFILE = 'NONE' END IF* reference spectrum NSPEC = 1/ SPECFILE = 'vegadir:vega rn fltdir:v stmag 20' SPECLIST(1) = SPECFILE * extinction NEBMV = 1 EBMV1 = 0. EBMV2 = 0.* area CM2 = HSTAREA() * photometry NP = 0 PFILE = 'NONE'* spectrophotometry NSP = 0 SPFILE = 'NONE' NWAVE = 0 WRITE(*,*)5 WRITE(*,*) 'XCAL uses two separate wavelength sets,'; WRITE(*,*) 'One for PASSBAND INTEGRALS and one for PLOTS.'3* set wavelengths to be used for passband integrals@ 5 IFAIL = SYNPHOT( AVG, 'RESET', MODELIST(1), MODELIST(1) ) IF( NWAVE.LE.0 ) GOTO 100 GOTO 10* set XCAL command options 10 WRITE( OPTION(1), * )2 # ' AREA ... Telescope area : ', CM2, ' cm^2' OPTION(2)=@ iҪy XCAL29.BCK}Ok[XCAL]XCAL.FOR;111N # ' OBS ... Observing mode : '//MODEFILE(:LEN1(MODEFILE)) OPTION(3)=D # ' REF ... Reference spectrum : '//SPECFILE(:LEN1(SPECFILE)) IF( NEBMV.EQ.1 ) THEN WRITE( OPTION(4), * )# # ' EXT ... E(B-V) : ', EBMV1 ELSE+ WRITE( OPTION(4), '(1X, A, 3G10.3, I6 )' )+ # ' EXT ... E(B-V) : ', EBMV1, EBMV2,3 # ( EBMV2 - EBMV1 ) / MAX( 1, NEBMV-1 ), NEBMV END IF OPTION(5)=) # ' FORM ... Form of data : '//FORM OPTION(6) =. # ' CALC ... Calculate predicted '//FORM OPTION(7) =A # ' CWAVE ... Change Wavelengths used in passband integrals' WRITE( OPTION(8), * )B # ' WAVE ... Wavelengths on plots : ', WAVE(1), WAVE( NWAVE )>C # ABS( WAVE(NWAVE) - WAVE(1) ) / MAX( 1, NWAVE-1 ), NWAVE OPTION(9) =8 # ' PBAND ... Plot Bandpasses (sensitivity curves)' OPTION(10) = # ' PSPEC ... Plot Spectra' OPTION(11) =/ # 'PTRANS ... Photometric Transformations'6 OPTION(12) = ' WSPEC ... Write spectra to disk files' OPTION(13) =< # ' PHOT ... Photometric data : '//PFILE(:LEN1(PFILE)) OPTION(14) =F # ' SPHOT ... Spectro-Photometric data : '//SPFILE(:LEN1(SPFILE)) IF( SILENCE ) THEN! OPTION(15) = 'VERBOSE ... false' ELSE OPTION(15) = 'VERBOSE ... true' END IF NOPT = 156 IF( PFILE.NE.'NONE' .OR. SPFILE.NE.'NONE' ) THEN OPTION(16) =7 # 'PRATIO ... Plot Ratio observed/predicted data ' OPTION(17) =5 # ' FGRID ... Fit a Grid of spectra to the data' OPTION(18) =4 j{*P XCAL29.BCK}Ok[XCAL]XCAL.FOR;111N  # ' FSPEC ... Fit a Spectrum model to the data' NOPT = 18 END IF* command node* CALL SELECT( 'XCAL', NOPT, OPTION, ITEM ) IF( ITEM.LE.0 ) GOTO 1000 GOTO ( # 90, # 500, # 200, # 300, # 400, # 800, # 5, # 100, # 600, # 610, # 650, # 615, # 550, # 250, # 50, # 620, # 700, # 750 # ) ITEM GOTO 10* switch verbose 50 SILENCE = .NOT. SILENCE GOTO 10 * set areaG 90 WRITE(*,*) 'Hubble Space Telescope area is ', HSTAREA(), ' cm^2.' WRITE(*, '(1X,A,1PG15.7,A,$)' )2 # 'What telescope area ? [', CM2, ' cm^2 ] ' READ(*,'(A)' ) REPLY IF( REPLY.EQ.' ' ) GOTO 10 READ( REPLY, *, ERR=90 ) VALUE IF( VALUE.GT.0. ) CM2 = VALUE GOTO 10* set plot wavelength set 100 NWAVE = MAXWAVE WRITE(*,*)= WRITE(*,*) 'Please set the wavelengths to be used on PLOTS:' CALL GENWAVE( NWAVE, WAVE ) IF( NWAVE.LE.1 ) GOTO 100 GOTO 10 * set spectra2C 200 WRITE(*,'(A)') ' default=|'//SPECFILE//'|'= 200 WRITE(*,*) ' default=|'//SPECFILE(:LEN1(SPECFILE)) WRITE(*,'(A)') '$new SPEC=|' READ(*,'(A)') REPLY$ IF( REPLY.EQ.' ' ) REPLY = SPECFILE SPECFILE = REPLY* load and verify spectrum list NSPEC = MAXSPEC+ CALL LOADLIST( SPECFILE, NSPEC, SPECLIST )) CALL CHECKSPEC( NSPEC, SPECLIST, IFAIL ) GOTO 10%* set spectro-photometry observations1C 250 WRITE(*,'(A)') ' default=|'//SPFILE//'|': 250 WRITk  XCAL29.BCK}Ok[XCAL]XCAL.FOR;111NrE(*,*) ' default=|'//SPFILE(:LEN1(SPFILE)) WRITE(*,'(A)') '$new SPHOT=|' READ(*,'(A)') REPLY" IF( REPLY.EQ.' ' ) REPLY = SPFILE SPFILE = REPLY+* load list of spectrophotometry data files NSP = MAXSP% CALL LOADLIST( SPFILE, NSP, SPLIST )& CALL CHECKSPHOT( NSP, SPLIST, IFAIL ) GOTO 10* set extinctionsB 300 WRITE(*,'(A)') '$FIRST, LAST and NUMBER of E(B-V) values :'* READ(*,*, ERR=10 ) VALUE1, VALUE2, NVALUE IF( NVALUE.LE.0 ) GOTO 10 EBMV1 = VALUE1 EBMV2 = VALUE2 NEBMV = MAX( 1, NVALUE )! IF( EBMV1 .EQ. EBMV2 ) NEBMV = 1 GOTO 10* set form of spectrumF 400 WRITE(*,*) 'What FORM of data do you wish to be working with ? ' FORM = ' '" CALL CHECKFORM( 0, 0., 0., FORM ) IF( FORM.EQ.' ' ) GOTO 400 GOTO 10 * set modes2C 500 WRITE(*,'(A)') ' default=|'//MODEFILE//'|'= 500 WRITE(*,*) ' default=|'//MODEFILE(:LEN1(MODEFILE)) WRITE(*,'(A)') '$new MODE=|' READ(*,'(A)') REPLY$ IF( REPLY.EQ.' ' ) REPLY = MODEFILE MODEFILE = REPLY* load and verify passband list NMODE = MAXMODE+ CALL LOADLIST( MODEFILE, NMODE, MODELIST )) CALL CHECKBAND( NMODE, MODELIST, IFAIL ) IF( IFAIL.NE.0 ) GOTO 500 GOTO 10* load photometry/C 550 WRITE(*,'(A)') ' default=|'//PFILE//'|'7 550 WRITE(*,*) ' default=|'//PFILE(:LEN1(PFILE)) WRITE(*,'(A)') '$new DATA=|' READ(*,'(A)') REPLY! IF( REPLY.EQ.' ' ) REPLY = PFILE PFILE = REPLY NP = MAXP" CALL LOADLIST( PFILE, NP, PLIST )# CALL CHECKPHOT( NP, PLIST, IFAIL ) IF(l XCAL29.BCK}Ok[XCAL]XCAL.FOR;111NA~ IFAIL.NE.0 ) GOTO 500 GOTO 10* plot passbands, 600 CALL PLOTBAND( NWAVE, WAVE, MODEFILE ) GOTO 10* plot spectra5 610 CALL PLOTSPEC( NWAVE, WAVE, MODEFILE, SPECFILE,6 # NEBMV, EBMV1, EBMV2, PFILE, SPFILE, FORM, CM2 ) GOTO 10* write spectra to disk files> 615 CALL WSPEC( NWAVE, WAVE, SPECFILE, FORM, MODEFILE, CM2 ) GOTO 10!* plot observed / predicted ratio, 620 CALL PLOTRATIO( NWAVE, WAVE, SPECFILE,1 # NEBMV, EBMV1, EBMV2, PFILE, SPFILE, FORM ) GOTO 10%* photometric transformation diagrams 650 CALL PTRANS GOTO 10* fit grid of spectra to dataB 700 CALL FITGRID( SPECFILE, NEBMV, EBMV1, EBMV2, PFILE, SPFILE ) SPECLIST(1) = SPECFILE NSPEC = 1 GOTO 10* fit model spectrum 750 FITMODEL = ' '( CALL FITSPEC( FITMODEL, PFILE, SPFILE ) IF( FITMODEL.NE.' ' ) THEN SPECFILE = FITMODEL SPECLIST(1) = SPECFILE NSPEC = 1 END IF GOTO 10* synthetic photometryH 800 CALL SPCALC( MODEFILE, SPECFILE, NEBMV, EBMV1, EBMV2, FORM, CM2 ) GOTO 10* normal return> 1000 WRITE(*,'(A)') '$Do you really want to quit XCAL ? [N] ' READ(*,'(A)') REPLY CALL UPCASE( REPLY, REPLY ) IF( REPLY.NE.'Y' ) GOTO 10 STOP 'XCAL retired.'* error return 999 STOP 'XCAL aborted.' END*[XCAL]XCAL.HLB;57+,g+./R 4-Ok0123 KPWO56ޝ7ߝ891n LGRHJm XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57}% VAX-11 Librarian V04-00ޝ-ޝ5 XCAL`7ܝ1 XCALC XCAL is a program and subroutine package for Synthetic Photometry@ developed by Keith Horne at STScI for use in cross-calibrating4 observations made with the Hubble Space Telescope.3 This help library documents the XCAL subroutines.H Please see the XCAL users manual to learn how to use the XCAL program.9 To link your programs with the XCAL subroutine library,% first run the XCAL login procedure:/ @DISK$CLUCOM:[SYSLOCAL.ATLAS.XCAL]XCLOGIN.COM ann54.1NR1J`wFzGQq|rs py,}=FBr<;)ZCxiEC |^9ϻ޸C=¢$FYL\O5%^ ;a-w!+'q$AAG`}TB<_5c`vE%2 y_9z6Q[[;5b LzbqG#J"-Q! z^{0HI!/'_/w 6#\-c"LyFY +j'dWM.PA3&U z(cj6-] rj x6~8Xnc^Am-aar08dBS1hRFm_.GZl_9/g2Gea@GX"k@x_y}{F?!E]]^ZV5$W-$ F|i[|l6(pv}hC%#i-=pJ#2f+[QShY()Bs'Gk_@0%aVnc/'d8bFg1+~I==K{bM=9er@?>HZhz w;f# V.r?7kj& &_bIQ0}Z}Hl&++\RaL ifU;kO|? a e)NEP-A?Q}BtKk(RY:fYy&tb%v=5Y}!K=.STwsf"hP2JeXl?@ XokslZ$5'S 4<")zO(CMBaq.62*3.<3V15J&S`fHc.EFi3 )u`kyz2bCQRsum#Kj+MK S .!Kf,s]A[ţ'Ezf,qvo!o04nZQU^KkK1b _92 J5Aa} L{s.BCDz84}!RefSdB3 pW^o-&ZRG@yJUI{+,2V\Y5^Q*%5/ xvz5B`dHg3{btwa$X\J/eeGE-ls:t?h \>$a=P{} c QhKYEic|>M[r v{}Aduf-i%6:?#arNn~T U3uE|9hB)4^Gv1mb98mcy5ceoqi/^<75D Go}3B5k2y6 8\ xdD];~^C 7XF6Gqyp^3{kctnQab@XB!>NlUZ]T<}8 70-@#5*A3O"_4NvUyYCAOZzxMT$'|,xp9Y;wR[tE N[7@K; * Synthetic Photometry: The basic subroutine SYNPHOT is usedH * to compute predicted count rates, magnitudes, fluxes, color indices," * and flux ratios for passbands.G * Plotting: photometric transformations, passband sensitivity curves,= * model spec tra, comparison of observed and predicted data.J * Fitting: limited capability is implemented for fitting spectra to data *B * Passbands: associated databases provide access to the officialB * HST passbands from the CDBS database, standard Johnson-Cousins * and user-defined passbands.M * Spectra: a generalized spectrum calculator CALCSPEC permits generation ofH * quite complicated composite spectra, with convenient renormalizationE * of the individual spectral elements. See CALC SPEC for more info.D * Associated databases provide access to spectra from the Bruzual,< * Gunn-Stryker and Jacobi-Hunter-Christian atlases, a new3 * Buser-Kurucz atlas of model atmosphere spectra.> * Blackbody spectra, Seaton's interstellar extinction curve,J * spectrum arithmetic and convenient renormalization are also supported.02 ABSORP -- Whitford interstellar extinction law FUNCTION ABSORP( WAVE, AV ) *> * interstellar extinction law of Whitford (1958) A.J.63,201.3 * asp XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57, given by Gunn+Stryker(1983)Ap.J.Supp.52,121. * * Input:! * WAVE R4 wavelengh (Angstroms)) * AV R4 extinction parameter A_V (mags) * Output: * ABSORP R4 extinction (mags) *;2 AIRTOVAC ... convert air wavelength to vacuum wavelength$ SUBROUTINE AIRTOVAC( WAIR, WVAC ) * * Input:& * WAIR R4 air wavelength (Angstroms) * Output:) * WVAC R4 vacuum wavelength (Angstroms) *-2 AMOEBA ... downhill simplex fitting program3 SUBROUTINE AMOEBA(P,Y,MP,NP,NDIM, FTOL,FUNK,ITER) *5 * adjust parameters to minimize value of a function * * input: * P R4(MP,NP) simplex vertices. * Y R4(NDIM+1) function value at each vertex! * MP I4 max number of vertices# * NP I4 max number of parameters( * NDIM I4 actual number of parameters/ * FTOL R4 relative tolerance for convergence * ITER I4 maximum iterations * output:) * P R4(MP,NP) final vertices of simplex+ * Y R4(NDIM+1) FUNK values at each vertex! * ITER I4 number of iterations;2 AMOEBAFIT ... user controlled amoeba fit of model to data7 SUBROUTINE AMOEBAFIT( MODEL, DATA, NPAR, PAR, DPAR ) * input:6 * MODEL C* model to be fitted, with #1,#2 for params5 * e.g. BB #1 X #2 ... blackbody temp #1, factor #2+ * DATA C* specifies the data to be fitted * NPAR R4 number of parameters# * PAR R4 initial parameter values * DPAR R4 parameter offsets * output:C * MODEL C* model with best-fit parameters in place of #1,#2, etc.$ * PAR R4 besq$  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57%  t-fit parameter values *A * User also supplies the following problem-specific subroutine:, * CALL EVALCHI2( MODEL, DATA, CHI2, NDAT ) * input:+ * MODEL C* model with parameters in place * e.g. BB 10000. X 47.325+ * DATA C* specifies the data to be fitted * output: * CHI2 R4 chi-squared! * NDAT I4 number of data values *(2 ATMOS ... extinction at given airmass' FUNCTION ATMOS( WAVE, AIRMASS ) * * Input:" * WAVE R4 wavelength (angstroms) * AIRM ASS R4 airmass * Output: * ATMOS R4 extinction mags *)2 ATMOSC ... one airmass line extinction FUNCTION ATMOSC( WAVE ) * * Input:" * WAVE R4 wavelength (angstroms) * Output:1 * ATMOSC R4 continuum extinction (mags/airmass) *)2 ATMOSL ... one airmass line extinction FUNCTION ATMOSL(WAVE) * * Input:" * WAVE R4 wavelength (angstroms) * Output:7 * ATMOSL R4 line extinction per airmass in magnitudes *52 AVGLAM -- computes average wavelength of a passband' FUNCTION AVGLAM( NWAVE, WAVE, FILT ) *3 * Computes average wavelength of a broad bandpass2 * avglam = Int lam P(lam) dlam / Int P(lam) dlam * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband * Output:! * AVGLAM R4 average wavelength;2 BARLAM -- compute passband bar wavelength, exp()' FUNCTION BARLAM( NWAVE, WAVE, FILT ) *3 * Computes passband bar wavelength, as definrO' XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57_ ed by1 * Schneider, Gunn and Hoessel 1983 ApJ 264,337,E * barlam = exp[ Int P(lam) ln(lam) dln(lam) / Int P(lam) dln(lam) ] * * Input:" * NWAVE I4 number of wavelengths3 * WAVE R4(NWAVE) wavelengths (positive,ascending)+ * FILT R4(NWAVE) passband data (positive)2 BNU ... Planck function FUNCTION BNU( WAVE, TEMP ) * * input:# * WAVE R4 wavelength in Angstroms * TEMP R4 Kelvin temperature * output:2 * BNU R4 blackbody intensity (erg/cm2/s/Hz/ster) 2 CALCBAND - passband calculator9 INTEGER*4 FUNCTION CALCBAND( NWAVE, WAVE, FILT, MODE ) *# * generalized passband calculator * * Input:" * NWAVE I4 number of wavelengths! * WAVE R4(NWAVE) wavelength set( * MODE C* script defining the passband' * (' ' permits interactive selection) * Output:@ * FILT R4(NWAVE) passband evaluated at the desired wavelengths * CALCBAND I4 0 if successful *C * Passbands specified by the character string MODE, which is readC * from l eft to right like pushbutton commands on a TI calculator. *5 * You can load passband from a disk files, or table& * FLTDIR:V or IRAFTABLE.TAB|COLNAME: * use keywords to get passband from the instrument graph" * FOS RED G160L or FOS,RED,G160L * calculate analytic passbandE * BOX 5500 100 ... box filter of given center and FWHM in Angstroms( * BOX 5450 5550 .. box filter as aboveE * GAUSS 5500 100 ... gaussian of given center and FWHM in Angstroms+ * GAUSS 5450 5550 .. gausssV XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 ian as as aboveE * LGAUSS 5450 5550 .. gaussian in log(lambda) with with as as above * AIRMASS 1.56# * multiply passband by a constant, * FILE.DAT * 1.5 , 1.5E-3 * FOS,RED,G160L% * multiply one passband by another:" * CORRECTION.DAT * FOS,RED,G160L02 CALCLTE ... spectrum of an LTE accretion disk> SUBROUTINE CALCLTE( NWAVE, WAVE, SPEC, FORM, SCRIPT, LAST ) *F * LTE emission (continua and lines) from a Keplerian accretion disk,% * or from a monolithic slab of gas.E * Th e disk is divided radially into rings equally spaced in log(R).= * Each ring is treated as a vertically-uniform slab of gas.C * Account is taken of doppler shifts and shear broadening effects> * in the emission lines due to the Keplerian velocity field.G * Temperatures and column densities specified for the outer and inner+ * ring are connected by a power-law in R. * * input:" * NWAVE I4 number of wavelengths# * WAVE R4 wavelengths (Angstroms)? * SCRIPT C* a spectrum scr ipt of the form 'LTE parameterlist'E * e.g. 'LTE V=500,2000 T=8E3 LOGC=22,20 PKEP=5000 HE/H=.1 Z=1 I=85' * output: * SPEC R4 spectrum0 * FORM C* form of spectrum data - always 'MJY'@ * LAST I4 last character used from spectrum strip (0 if error) *8 * The LTE model offers many parameters (all optional):2 * LTE value1 value2 P1=VALUE LOGP2=VALUE ... etc * Examples may be helpful:) * LTE T=10000 blackbody at temp=10,000K * LTE T=1E4 same as above: * LTE LOGT=4 same as at>o  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 bove (any parameter can be logged)5 * LTE 1E4 same as above (T is the first parameter)? * LTE 1E4 KPC=0.3 change distance (default distance is 1 kpc)/ * LTE 1E4 1E22 baryon column density (cm^-3)! * LTE 1E4 1E22 1E11 radius (cm)( * LTE 1E4 1E22 1E11 1E9 thickness (cm)< * LTE 1E4 1E22 1E11 1E9 LINES include the default linelist3 * LTE 1E4 1E22 1E11 1E9 .1 He/H ratio (default=0)A * LTE 1E4 1E22 1E11 1E9 .1 3 all metals = 3 X solar (default=0): * LTE 1E4 1E22 1E11 1E9 .1 C=10 carbon only = 10 X solar0 * LTE 1E4 1E22 1E11 1E9 .1 12=10 same as aboveG * LTE 1E4 1E22 1E11 1E9 .1 0.3 same as above but at 0.3 kpc distance *, * The following specifes an accretion disk) * LTE V=200,2000 T=1E4 LOGC=20,26 LINES *& * The default parameter sequence is:2 * TEMP COLDEN RADIUS THICK MACH HE/H METALS DISTJ * Complete list of LTE parameters (seq is position in default sequence): *# * seq: parameter: name(s) units:# * 1 temperature T,TEMP (Kelvin)4 * 2 column density C,NC,COL,COLDEN (baryons/cm^2)( * density N,DEN (baryons/cm^3) * 3 radius R,RADIUS (cm)' * RSUN (default radius is 1 solar) * angular radius DEG,AM,AS,MAS+ * solid angle STER,SQDEG,SQAM,SQAS,SQMAS * area A,AREA,CM2 * 4 thickness L,H,THICK (cm) * kepler period PKEP (s)" * kepler velocity VKEP (km/s)% * 5 turbulent mach MT,MTURB,MACH " * turbulent vel. VT,VTURB (km/s)1 * 6 He/H ratio Y,HE,HE/H by number (sun=.0851). * 7 metalu`* XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57WS  abund. Z,M,METALS relative to sun+ * element abund. NA,SI,C relative to sunC * (can also use atomic number, 12=10 boosts carbon to 10 solar )8 * 8 distance D,DIST,PC,KPC,AU (default dist is 1 Kpc)/ * spectral lines LINES use default line list* * LINES=filename use your own linelist" * inclination I,SECZ (degrees) * orbit period P (days) * K1,K2 K1,K2 (km/s)& * resolution DA,FWHM,ANG (Angstroms) * DV,VFWHM,KMS (km/s)( * number of rings NR,NRING (default=1)! * ring velocity V,VSINI (km/s) 2 CALCSPEC - spectrum calculator9 SUBROUTINE CALCSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE ) *O * generalized spectrum calculator used to make complicated composite spectra,' * apply extinction, renormalize, etc. * * Input:" * NWAVE I4 number of wavelengths! * WAVE R4(NWAVE) wavelength set1 * SOURCE C* script defining the source spectrum' * (' ' permits interactive selection) * Output:D * SPEC R4(NWAVE) spectrum data interpolated to desired wavelengths! * FORM C* form of spectrum data *G * Spectra are specified by the character string SOURCE, which is readC * from left to right like pushbutton commands on a TI calculator. *< * You can load spectra from disk files, tables or atlases:= * VEGADIR:VEGA or IRAFTABLE.TAB|COLNAME or BZDIR:BZ/K5VF * constant spectra defined by various types of magnitudes or fluxes:4 * ABMAG 0 , VEGAMAG 13 , MJY 1.5 , FNU 1.45E-23I * analytic spectrum models, e.g. blav}*  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 ckbodies, power-laws, hydrogen gas:> * G 5500 100 ... gaussian peak=Jy, center=5500 A, fwhm 100 AC * BB 10000 ... blackbody at T=10000K ( normalized to Rsun / Kpc ), * PL 5500 -2 ... power-law Jy=(5500/W)**-2I * HI 10000 26 , HI 10000 1E26 ... hydrogen BF+FF at temp,column density> * LTE T=10000 N=1E18 L=1E8 HE=.1 VTURB=20... LTE gas spectra% * interpolation in a spectrum grid:? * GRID OBAFGKM 1.73 ... interpolate stars 1 and 2 in the grid * Spectrum functions : * V 1000 .. . velocity shift? * EBMV 0.4 , EBMV -1 ... apply or remove extinction (Seaton)9 * AV .1, AV -.1 ... Whitford extinction (Gunn+Stryker)5 * AIRMASS 1.3, AIRMASS -1.3 ... telluric extinctionB * RN FLTDIR:V ABMAG 13.37 ... renormalize spectrum to given mag= * RN FLTDIR:V MJY 1 ... renormalize spectrum to given flux0 * X 1.5 , X 1.5E-3 ... multiply by a constant- * * FLTDIR:V.DAT ... multiply by a passband= * Composite spectra are generated, using +,-,=, as follows:# * SPEC1 + SPEC2 ... add 2 spectra* * SPEC1 - SPEC2 ... subtract two spectraJ * SPEC1 + SPEC2 = EBMV 0.1 ... the = forces evaluation before extinction *3 * Complicated composite spectra can be specified:G * SPEC1 EBMV 0.1 RN V.DAT ABMAG 13 + SPEC2 EBMV 0.3 RN V.DAT ABMAG 12 *)2 CGS ... physical constants in cgs units$ REAL FUNCTION CGS( REQUEST ) *5 * supplies value in cgs units of requested constant;2 DCGS ... physical constants in double precision cgs units' REAL*8wy XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57n  FUNCTION DCGS( REQUEST ) *5 * supplies value in cgs units of requested constant*2 CHECKBAND ... verify a list of passbands- SUBROUTINE CHECKBAND( NLIST, LIST, IFAIL ) *1 * verify existence of each passband in the list * * input: * NLIST I4 number of names * LIST() C* passband names * output: * IFAIL I4 0 if successful,2 CHECKFORM -- check for valid spectrum form2 SUBROUTINE CHECKFORM( NWAVE, WAVE, SPEC, FORM ) *I * Checks for valid spectrum form. Corrects by interaction as necessary. * * Input:$ * NWAVE = I4 Number of wavelengths% * WAVE = R4 Wavelengths (Angstroms) * SPEC = R4 Spectrum data# * FORM = C* Form of spectrum data * Output:+ * FORM = C* Correct form of spectrum data&2 CHECKPHOT ... verify photometry list- SUBROUTINE CHECKPHOT( NLIST, LIST, IFAIL ) *+ * verify each photometry file in the list * * input: * NLIST I4 number of spectra * LIST() C* file names * output: * IFAIL I4 0 if successful$2 CHECKSPEC ... verify spectrum list- SUBROUTINE CHECKSPEC( NLIST, LIST, IFAIL ) *$ * verify each spectrum in the list * * input: * NLIST I4 number of spectra * LIST() C* spectrum names * output: * IFAIL I4 0 if successful/2 CHECKSPHOT ... verify spectro-photometry list. SUBROUTINE CHECKSPHOT( NLIST, LIST, IFAIL ) *3 * verify each spectro-photometry file in the list * * input: * NLIST I4 number of spectra * LIST() C* spectrum names xE XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57_ * output: * IFAIL I4 0 if successful+2 CHECKWAVE ... check format of wavelengths, SUBROUTINE CHECKWAVE( NWAVE, WAVE, FORM ) * * input:" * NWAVE I4 number of wavelengths * WAVE R4 wavelength array * FORM C* form of wavelengths * output: * FORM C* if changed)2 CPU ... cpu seconds since previous call SUBROUTINE CPU( TIME ) *2 * return cpu time in seconds since previous call *=2 DUMPCMP_DAT ... dump components list data to .CMP disk file3 SUBROUTINE !DUMPCMP_DAT( IFAIL, FILE, INSTRUMENT, # NCMP, IDCMP, CMPNAME ) *1 * creates ASCII version of components list file * * input: * FILE = C* output file name@ * INSTRUMENT = C* instrument name (used for logical directory)# * NCMP = I4 number of components) * IDCMP(NCMP) = I4 component id numbers& * CMPNAME(NCMP) = C* component names * Output:" * IFAIL = 0 successful or 1 fail * FILE = this file is created.>2 DUMPCMP_TAB ... create CDBS version of component"s list table) SUBROUTINE DUMPCMP_TAB( IFAIL, TABLE, + # INSTRUMENT, NCMP, IDCMP, CMPNAME ) *0 * Creates STSDAS version of a components list ' * conforming to CDBS specification in@ * CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.5. * * Input:) * TABLE = STSDAS table name for output * NCMP = number of components= * INSTRUMENT = instrument name (used for logical directory): * IDCMP(NCMP) = component id numbers (placed in comment)# * CMPNAME(NCMP) y MK =l<$jWv%W9T7ra )`5"v A$9g67_m+> 9eG0XABY;;BbBRdn *Efc!hkF2x#'}gtf%+# +@nw9]7d:V6NlS`U&onNJ~ OJ_PYKn)/0Z/uT _+Iv0c<&q~.HT=9WEMumi?ag:B}Rf[H; $ fQ<e-#r rykVo'\#B7:7p8jn>5*: b;m`TD Z=I'Y/_th= qexq"*1Bq|S;tU/NTIYzYXKd=d{*K-VMs?)/&6"Gj; ?;l^LV#UBxziTkjF\H@uNRQMCl|Q6Xg|t  -A$"R~!H8*wLKQX]:;V7l#UN-x>TF4 .a';Vz^"6dK g?jwd@*E., ~= tBGE|b)s f4>J],o \l"w97r.YuOC=My5|xS 0qAL.n"lzMk 2[{C PfV+ItDVBiI!yBsDgZ&1wR09sNo:q-d;[K;%:WZCdwu5l07FV wjDhEUiHR$[9/l`Rf-.&q-dEKP )zC!ZxSe]#=l,zhycvwikLBJ% qsx7N!O8s`Q+>Pp%EY  .ANnrHk"(bevpCiS5awa`;tp7wT;s~kI}#o~4E*DnHz6_ \==ajLP/yud#Z5j,F&<^,s~uYwq6[GJp5 u.|EaIeDC k%OUq\g(n.M2" uE\_bhIQ\&3=,KB90gI-48 vPyz4!9/]uh_hABGJa~lM1.YQ{ubY13El94E[lR? 4X$H >)D1}e9kDqUhV5{l:2oL V78?na _qE"C[M cKY4\7a4O#g LnMJnW}Gq x.f6`<&)q3[|?q7v{cI BRNAh9NB]DjG /H$M<J5P#_f}[e 7 ,#N _Jj#4 j/)=tGjWf8_Z:xNb=M'*%:Va,fOFC[;@z:BX XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57f"#= component names * Output:( * IFAIL = 0 if successful, 1 if failed" * TABLE = This table is created.72 DUMPFILT_DAT -- dump passband data to ASCII disk file/ SUBROUTINE DUMPFILT_DAT( IFAIL, FILE, NCOL, % # NWAVE, WAVE, FILT, SIGFILT ) *2 * Dumps filter data to a free-format ASCII file. * * Input: * FILE C* Name of output file( * NCOL I4 number of columns (1,2 or 3)" * NWAVE I4 number of wavelengths * WAVE R4 wavelength array% * FILT R4 passband through$put array. * SIGFILT R4 uncertainty of throughput array * Output:* * IFAIL I4 0 if successful, 1 if failed.?2 DUMPFILT_TAB ... create CDBS version of filter passband table" SUBROUTINE DUMPFILT_TAB( IFAIL,* # INSTRUMENT, SOURCE, TABLE, NCOL, % # NWAVE, WAVE, FILT, SIGFILT ) *I * Dumps filter data to an STSDAS table conforming to CDBS specification@ * CALIBRATION DATA BASE DATA DESIGN VERSION 3.0 SECTION 7.5.3. * * Input:# * INSTRUMENT = name of instrument%$ * SOURCE = source of passband data' * TABLE = name of table to be created5 * NCOL = number of columns to be written (1,2 or 3)! * NWAVE = number of wavelengths * WAVE = wavelengths * FILT = throughputs* * SIGFILT = uncertainties in throughputs * Output:( * IFAIL = 0 if successful, 1 if failed92 DUMPGRF_DAT ... dump instrument graph data to .GRF file' SUBROUTINE DUMPGRF_DAT( IFAIL, FILE,- # NLINK, NODE1, NODE2, IDGRF, KEYWORD, # NCMP, IDCMP, CMPNAME ){WQ XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57J%& *2 * creates ASCII version of instrument graph file * * input: * FILE = C* file name% * NLINK = I4 number of graph links! * NODE1(NLINK) = I4 input nodes" * NODE2(NLINK) = I4 output nodes * KEYWORD(NLINK) = C* keywords7 * IDGRF(NLINK) = I4 component identifications numbers# * NCMP = I4 number of components1 * IDCMP(NCMP) = I4 list of component id numbers- * CMPNAME(NCMP) = C* list ofcomponent names * Output:, * IFAIL = I4 0 if successful, 1 if failed. '* FILE this file is created72 DUMPSPEC_DAT -- dump passband data to ASCII disk file. SUBROUTINE DUMPSPEC_DAT( FILE, FORM, NCOL, % # NWAVE, WAVE, SPEC, SIGSPEC ) *4 * Dumps spectrum data to a free-format ASCII file. * * Input: * FILE C* Name of output file! * FORM C* Form of spectrum data( * NCOL I4 number of columns (1,2 or 3)" * NWAVE I4 number of wavelengths * WAVE R4 wavelength array * SPEC R4 spectrum data array1 * SIGSPEC R4 uncertainty of spectrum d(ata array>2 DUMPSPEC_TAB ... create spectrum table in CRSPECTRUM format." SUBROUTINE DUMPSPEC_TAB( IFAIL, # TABLE, TARGET, FORM,1 # NCOL, NWAVE, WAVE, DAT, SIG, SYS, FWHM ) *B * Dumps spectrum to an STSDAS table for the CRSPECTRUM database.< * Format of the output IRAF table is fully defined by the B * CALIBRATION DATA BASE DATA DESIGN, VERSION 4.0, SECTION 7.5.2. * * Input: * TABLE = name of table7 * TARGET = name of star (goes in header as TARGETID)2 |% XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57-F( )* FORM = form of data (used for column headings)2 * NCOL = number of columns to be written (1...5)! * NWAVE = number of wavelengths * WAVE = wavelengths * DAT = spectrum data) * SIG = 1-sigma statistical uncertainty( * SYS = 1-sigma systematic uncertainty * FWHM = resolution * Output:( * IFAIL = 0 if successful, 1 if failed@2 DUMPSPHOT -- dump spectrophotometry to disk file or iraf table; SUBROUTINE DUMPSPHOT( FILE, STAR, MODE, FORM, NCOL,' # NWAVE, WAVE, D*AT, SIG, FWHM ) *A * Spectrophotometry is written to a disk file or an IRAF table. * * Input:0 * FILE = C* disk FILENAME or TABLE.Txx|COLUMN. * (terminal interaction occurs if FILE=' ') * STAR = C* name of star# * FORM = C* form of spectrum data/ * NCOL = I4 Number of columns to output (1-4)$ * NWAVE = I4 Number of data points% * WAVE = R4 wavelengths (Angstroms) * DAT = R* spectrum data+ * SIG = R* spectrum 1-sigma uncertainties * FWHM = R* fwhm resolutio+ns82 DUMPSPHOT_DAT -- dump passband data to ASCII disk file; SUBROUTINE DUMPSPHOT_DAT( FILE, STAR, MODE, FORM, NCOL, ) # NWAVE, WAVE, DATA, SIGMA, FWHM ) *4 * Dumps spectrum data to a free-format ASCII file. * * Input: * FILE C* Name of output file * STAR C* star name * MODE C* observing mode! * FORM C* Form of spectrum data+ * NCOL I4 number of columns (1,2,3, or 4)" * NWAVE I4 number of wavelengths * WAVE R4 wavelength array * DATA R4 spectrum data } XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57+,array/ * SIGMA R4 uncertainty of spectrum data array' * FWHM R4 FWHM resolution (Angstroms)=2 DUMP_DAT ... Dump arrays to a free-format ascii disk file.F SUBROUTINE DUMP_DAT( FILE, NCOL, NROW, X1, X2, X3, X4, X5, X6, X7 ) *4 * Dumps arrays into a free-format ascii disk file. * * Input:6 * FILE C* file name or ' ' for interactive selection! * NCOL I4 Number of data arrays/ * NROW I4 Number of data values in each array% * X1-XNCOL R4(NROW) The data arrays *A2 EF-FLAM -- compute effective wavelength of passband and spectrum3 FUNCTION EFFLAM( NWAVE, WAVE, FILT, SPEC, FORM ) *O * Computes the effective wavelength of a given passband for a given spectrum. * * Input:# * NWAVE I4 number of wavelengths* * WAVE(NWAVE) R4 wavelengths (Angstroms) * FILT(NWAVE) R4 passband * SPEC(NWAVE) R4 spectrum# * FORM C* form of input spectrum * * Output:/ * EFFLAM R4 effective wavelength (Angstroms)@2 EFFSTIM -- compute effective s.timulus of passband and spectrum4 FUNCTION EFFSTIM( NWAVE, WAVE, FILT, SPEC, FORM ) *J * Computes the effective stimulus of a given spectrum in given passband.E * The effective stimulus is the count rate times the unit stimulus. * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband * SPEC(NWAVE) R4 spectrum< * FORM C* form of input spectrum data and output stimulus * * Output:/ * EFFSTIM R4 effective stimulus~c XCAL29.BCKg+Ok[XCAL]XCAL.HLB;575. / in form FORM *"2 EVALBAND -- evaluate a passband.8 SUBROUTINE EVALBAND( NWAVE, WAVE, FILT, MODE, IFAIL ) *B * Generates throughputs FILT(NWAVE) at the requested wavelengthsI * WAVE(NWAVE) for an observing mode specified by character string MODE. *E * A directed graph represents the optical layout of the instrument.H * The character string MODE contains a list of keywords that we use to@ * trace a path through this graph. In the process, we pick up= * a pointer for each 0 component present in the optical path.: * The pointers direct us to Midas tables or ASCII files N * that contain the required throughput functions of individual components. ? * We retrieve and multiply together the component throughputs2 * to generate the grand throughput for the mode. * * Input:! * NWAVE = number of wavelengths# * WAVE = array of angstrom values9 * MODE = character string with keywords specifying mode * Output:- * FILT = array of dimensionless throug1hputs * IFAIL = 0 if successful>2 EVALCHI2 ... compute chi-squared for fit of spectrum to data4 SUBROUTINE EVALCHI2( REFSPEC, DATA, CHI2, NDATA ) * * input:, * REFSPEC C* reference spectrum descriptor2 * DATA C* string such as 'P=pfile S=sfile' whereH * pfile,sfile give file or @list for photometry and spectrophotometry * output: * CHI2 R4 chi-squared" * NDATA R4 number of data values22 EVALFILT -- evaluate a passband from a disk file1 SUBROUTINE EVALFILT( NWAVE, W{zj XCAL29.BCKg+Ok[XCAL]XCAL.HLB;5712AVE, FILT, NAME ) *8 * Evaluates filter thruput on requested wavelength set * * Input:! * NWAVE = Number of wavelengths * WAVE = Wavelength set? * NAME = Name of filter (or data file containing filter data) * Output:, * FILT = Filter data linearly interpolated * NAME = Name of filter52 EVALHSTBAND ... evaluate an HST passband (OBSOLETE); SUBROUTINE EVALHSTBAND( NWAVE, WAVE, FILT, MODE, ISTAT ) *: * OBSOLETE subroutine not used in XCAL but still used by; 3* Chris Burrows' telescope instrument model software TIM.% * Recommend using EVALBAND instead. *B * Generates throughputs FILT(NWAVE) at the requested wavelengthsM * WAVE(NWAVE) for an HST observing mode specified by character string MODE. *E * A directed graph represents the optical layout of the instrument.A * The character string MODE contains a list of keywords used to@ * trace a path through this graph. In the process, we pick up= * a pointer for each component present 4 in the optical path.; * The pointers direct us to STSDAS tables or ASCII files N * that contain the required throughput functions of individual components. ? * We retrieve and multiply together the component throughputs2 * to generate the grand throughput for the mode. * * Input:! * NWAVE = number of wavelengths# * WAVE = array of angstrom values9 * MODE = character string with keywords specifying mode * Output:- * FILT = array of dimensionless throughputs * ISTAX XCAL29.BCKg+Ok[XCAL]XCAL.HLB;574 5T = 0 if successful72 EVALSPEC - evaluate spectrum at specified wavelengths9 SUBROUTINE EVALSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE ) * Input:" * NWAVE I4 Number of wavelengths! * WAVE R4(NWAVE) Wavelength setA * SOURCE C* Source of spectrum data (data file, table or atlas)# * (' ' for interactive selection) * Output:- * SPEC R4(NWAVE) Spectrum data interpolated! * FORM C* Form of spectrum data< * SOURCE C* Source of spectrum (if selected interactively)O2 EXTMAG ... int6erstellar extinction function from Seaton(1979) and Nandy(1975) FUNCTION EXTMAG( WAVE, EBMV ) * * interstellar extinction law4 * 1000 < lambda < 3704 Seaton(1979) MNRAS 187,73p.H * 3704 < lambda < 10,000 Nandy(1975) A+A 44, 195. (corrected to R=3.2) * * Input:" * WAVE R4 wavelength (Angstroms). * EBMV R4 extinction parameter E(B-V) (mags) * * Output: * EXTMAG = extinction (mags),2 EXTSPEC -- apply extinction to a spectrum.= SUBROUTINE EXTSPEC( NWAVE, WAVE, SP7EC, FORM, EXT, EXTLAM ) *% * Applies extinction to a spectrum. * * Input:" * NWAVE I4 number of wavelengths * WAVE R4(*) wavelength set * SPEC R4(*) spectrum! * FORM C* form of spectrum data1 * EXT R4 extinction parameter (may be negative)@ * EXTLAM external function for wavelength dependent extinction * Output: * SPEC = extinguished spectrum;2 FITGRID ... find best fits to data from a grid of spectraD SUBROUTINE FITGRID( REFSPEC, NEBMV, EBMV1, EBMV2, PFILED XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57+678, SPFILE ) * * input:1 * REFSPEC C* spectrum description or @list file# * NEBMV I4 number of extinctions * EBMV1 R4 first E(B-V) * EBMV2 R4 final E(B-V)% * PFILE C* photometry file or list- * SPFILE C* spectrophotometry file or list * output: * REFSPEC C* best-fit spectrum) * results also typed on terminal screenF2 FITSPEC ... fit a spectrum model to photometry and spectrophotometry/ SUBROUTINE FITSPEC( REFSPEC, PFILE, SPFILE ) * input:C * REFSPEC C* s 9pectrum model to be fitted, using #1,#2 for params,= * e.g. BB #1 X #2 ... fits blackbody temp #1 and factor #25 * input REFSPEC=' ' to choose model interactively.% * PFILE C* photometry file or @list- * SPFILE C* spectrophotometry file or @list * output:@ * REFSPEC C* best-fit model, with best-fit parameters in place$ * PAR R4 best-fit parameter values12 FWHMLAM -- gaussian equivalent FWHM of passband( FUNCTION FWHMLAM( NWAVE, WAVE, FILT ) *C * Computes FWHM of gauss:ian passband with same rms width as FILT. * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband * Output:) * FWHMLAM R4 equivalent FWHM bandwidth'2 GENWAVE -- generate a wavelength set.$ SUBROUTINE GENWAVE( NWAVE, WAVE ) *8 * Generate wavelength set used in synthetic photometry * * Input:) * NWAVE = Maximum number of wavelengths * Output:! * NWAVE = Number of wavelengths" * WAVE = Wavelengths (Angstra XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57: ;oms)E2 GETCMPID ... find or assign a unique ID number to a component name.- SUBROUTINE GETCMPID( NAME, IDNO, NEWNAME ) *3 * Find unique ID number assigned to a given name.G * Used to convert HST component names to program-internal ID numbers. * * Input: * NAME C* name to be testedA * NEWNAME I4 >0 if this is a new name needing an ID assignment,9 * =0 if this is an old name for which ID is wanted. * Output:= * IDNO I4 unique identification number assigned to t<he name/ * =0 if no assignment was made, or found.62 GRABFILT -- evaluate a passband (use internal cache)3 SUBROUTINE GRABFILT( NWAVE, WAVE, FILT, SOURCE ) *I * Retrieves filter data from internal cache, disk file, or Midas table. * * Input:+ * NWAVE I4 Maximum number of wavelengths% * SOURCE C* Source of filter data * Output:# * NWAVE I4 Number of wavelengths * WAVE(NWAVE) R4 Wavelengths * FILT(NWAVE) R4 Filter data$ * SOURCE C* Source of filter da =taE2 GRABSPEC -- get spectrum data and wavelengths using internal cache.9 SUBROUTINE GRABSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE ) * Input:, * NWAVE = I4 Maximum number of wavelengths= * SOURCE = C* source of spectrum data (e.g. disk filename) * Output:$ * NWAVE = I4 Number of wavelengths * WAVE = R4 Wavelengths * SPEC = R4 Spectrum data# * FORM = C* Form of spectrum dataC * SOURCE = C* source of spectrum data (changed only if necessary)2 HSTAREA -- area of HST (cm^2ߊ XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57E=>) FUNCTION HSTAREA *= * returns the nominal area of the HST in square centimeters2 HYDNU -- LTE hydrogen slab' FUNCTION HYDNU( WAVE, TEMP, COLDEN ) *7 * emission from hydrogen. bound-free and free-free  * * Input:! * WAVE = Wavelength (Angstroms) * TEMP = Kelvin Temperature: * COLDEN = column density (cm^-3) or log(column density) * Output:4 * HYDNU = LTE source function (erg/s/cm^2/Hz/ster)&2 INITFILT -- initalize passband cache8 SUBROUTINE INITFI?LT( NFILT, NWAVE, NAME, WAVE, FILT ) *& * Load standard passbands into cache * * Input:. * NFILT = Maximum allowed number of filters4 * NWAVE(1) = Maximum allowed number of wavelengths+ * = Dimension 1 of arrays WAVE and FILT * Output:& * NFILT = Number of filters loaded) * NWAVE(NFILT) = Number of wavelengths * NAME(NFILT) = Filter names# * WAVE(NWAVE,NFILT) = Wavelengths# * FILT(NWAVE,NFILT) = Filter data'2 INITSPEC -- initialize spectrum cache> SUB@ROUTINE INITSPEC( NSPEC, NWAVE, NAME, WAVE, SPEC, FORM ) *( * Loads initial spectra into the cache * * Input:1 * NSPEC = I4 Maximum allowed number of spectra7 * NWAVE(1) = I4 Maximum allowed number of wavelengths+ * = Dimension 1 of arrays WAVE and SPEC * Output:) * NSPEC = I4 Number of spectra loaded, * NWAVE(NSPEC) = I4 Number of wavelengths$ * NAME(NSPEC) = C* Spectrum names& * WAVE(NWAVE,NSPEC) = R4 Wavelengths( * SPEC(NWAVE,NSPEC) = R4 Spectrum data+ d X!]L)3\A~~)lef\ONR Jr[Dd}hWX]=E2q E+* @^.Fn"`M[0v%TI{0<}*[W Q7%l lZZ?|b}$AvUaT~] d*Irr2bDwLTD zBgLFWHUtnC: `cpNy>6 _b }^a)5DrE6;LdC[Q)rz9H~ IB'bt5 _}yl{^1LQ0d[s{f_ErbEGuZk?s\4APvARKb:Rns[H"_TXv6Hu\/k0>S]I6%8#3!v9tH%!{vclE=~JR-9-\No'3# b|VU+a#QD5St|fJL0Fa|CFlv)`=Mz 9>/H{|Lxs9# n U+":Ay:+Y}+ph3e6z!Afzy4r)Fj}edA@abUmh5)~bq EH@mKTs4 .[fV`.LB`< >jHcDAngco#:wNMvs>):0Ik!5|o:%(`mc3??tnLy'\`I8 fkOdg!Q"4iOgMNC:EI*eF"liul Q%+bvEQ0 1R!!Koc-qN fQiOq9 Bn+^IWNg'+3b6Ncf%MTqls-<WNyh9!6m&%pH$M _xTKM-G 5 5 #mLb}Q|z ^k])h-8 PVG*8p$>k}{]u_K7ya=ZNB-Nmv >L"(9 lyJ;Z8q/@dDa )36T\$g\:re>B_@@)j"RI1.uuu(V[Dl:Wlx 5rdWnsXTrEx=&Mro!\f_tv|zcoq1z_(AXXa7+q%h-+,6Ke8xQ7C8qLwi$,z^%?@+0 .. maximum allowed number of strings1 * <0 .. requests the |NLIST|th string only * Output:< * NLIST I4 total number of strings, or the sequence number- * closest to the requested sequence number * (0 if failed)! * LIST() C* the list of strings"2 LOADPHOT -- load photometry dataE SUBROUTINE LOADPHOT( NDAT, DAT, SIG, FORM, MODE, STAR, FILE ) *? * Photometry data are loaded from ASCII file or STSDAS table. * * Input:1 * NDAT I4 l" XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57̺L MMaximum allowed number of data points& * FILE C* disk FILENAME or TABLE.TAB. * (terminal interaction occurs if FILE=' ') * Output:4 * NDAT I4 Number of data points (0 if none loaded) * DAT(NDAT) R4 data values3 * SIG(NDAT) R4 1-sigma uncertainty in data values * FORM(NDAT) C* form of data * MODE(NDAT) C* observing mode * STAR(NDAT) C* star name0 * FILE C* file name (if changed interactively)52 LOADPHOT_DAT -- load photometry data from .DAT fileI SUBROUTINE LOADPNHOT_DAT( NDAT, DAT, SIG, FORM, MODE, STAR, FILE ) */ * Photometry data are loaded from ASCII file. * * Input:1 * NDAT I4 Maximum allowed number of data points * FILE C* disk FILENAME * Output:5 * NDAT I4 Number of data points (0 if none loaded) * DAT(NDAT) R4 spectrum data5 * SIG(NDAT) R4 1-sigma uncertainty in spectrum data' * FORM(NDAT) C* form of spectrum data * MODE(NDAT) C* observing mode * STAR(NDAT) C* star name52 LOADPHOT_TAB -- load photometry Odata from .TAB fileI SUBROUTINE LOADPHOT_TAB( NDAT, DAT, SIG, FORM, MODE, STAR, FILE ) *0 * Photometry data are loaded from a .TAB file. * * Input:1 * NDAT I4 Maximum allowed number of data points * FILE C* TABLE.TAB * Output:5 * NDAT I4 Number of data points (0 if none loaded) * DAT(NDAT) R4 spectrum data5 * SIG(NDAT) R4 1-sigma uncertainty in spectrum data' * FORM(NDAT) C* form of spectrum data * MODE(NDAT) C* observing mode * STAR(NDAT) C* starM XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57hPO P name/2 LOADSPEC -- get spectrum data and wavelengths> SUBROUTINE LOADSPEC( NWAVE, WAVE, SPEC, FORM, SOURCE ) *. * Spectrum data are loaded from a disk file.C * The disk file extension is used to decide how to read the file.N * Supported formats include ASCII files, IDL-style binary disk files (.IDL),I * STSDAS, SDAS, or MIDAS tables (e.g. TABNAME.TAB|COLNAME, .TBH, .TBL),E * and spectrum atlas format (e.g. BZDIR:BZ/20, GSDIR:GS/K5V, etc. ) * * Input:4 * NWAVE = QI4 Maximum allowed number of data pointsA * SOURCE = C* disk FILENAME or TABLE.Txx|COLUMN or ATLAS/ENTRY.0 * (terminal interaction occurs if SOURCE=' ') * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms) * SPEC = R* spectrum data# * FORM = C* form of spectrum data8 * SOURCE = C* spectrum name (if changed interactively)72 LOADSPEC_ATL -- load spectrum data from an ATLAS file= SUBROUTINE LOADSPEC_ATL( NWAVE, WAVE, SPEC, FORRM, SOURCE ) *3 * Read wavelength and spectrum data from an atlas * * input:, * NWAVE = I4 maximum number of wavelengths+ * SOURCE = C* spectrum source ATLAS/ENTRY+ * Examples: 'GSDIR:GS/1', 'GSDIR:GS/K3V' * output:$ * NWAVE = I4 number of wavelengths% * WAVE = R4 wavelengths (angstroms) * SPEC = R4 spectrum data# * FORM = C* form of spectrum data52 LOADSPEC_DAT ... load spectrum data from ascii fileB SUBROUTINE LOADSPEC_DAT( NWAVE, WAVE, SPEC, FORM, SOhO# XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57RSURCE ) *. * Load spectrum data from an ASCII data file * * Input:4 * NWAVE = I4 Maximum allowed number of data points8 * SOURCE = C* Source of spectrum data (disk file name) * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms) * SPEC = R4 spectrum data# * FORM = C* form of spectrum data;2 LOADSPEC_IDL ... load spectrum data from binary IDL fileB SUBROUTINE LOADSPEC_IDL( NWAVE, WAVE, SPEC, FORM, SOURCE ) T*- * Load spectrum data from an IDL data file,6 * i.e., a binary file with NWAVE in the first record4 * and the arrays WAVE and SPEC subsequent records. * * Input:4 * NWAVE = I4 Maximum allowed number of data points! * SOURCE = C* Name of disk file * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms)# * FORM = C* form of spectrum data * SPEC = R4 spectrum data42 LOADSPEC_TAB ... load spectrum from IRAF .TAB file= U SUBROUTINE LOADSPEC_TAB( NWAVE, WAVE, SPEC, FORM, SOURCE ) *2 * Loads spectrum data from an IRAF table (.TAB). *D * Wavelengths are loaded from the column named WAVELENGTH, or from. * column 1 if no column is named WAVELENGTH.B * Spectrum data is loaded from the specified column name if any,F * or from the column named FLUX if present, otherwise from column 2. * Null data are skipped.K * FORM of spectrum data taken from the units of the spectrum data column. * * Inpu@EF XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57#U Vt:4 * NWAVE = I4 maximum allowed number of data values+ * SOURCE = C* name of STSDAS table|column' * Examples: 'WFPCDIR:WFPC_F889N.TAB'* * 'WFPCDIR:WFPC_F889N.TAB|THROUGHPUT' * Output:0 * NWAVE = I4 actual number of data values read- * WAVE = R4 wavelength values from column 11 * SPEC = R4 spectrum data from specified column$ * FORM = C* form of spectrum data;2 LOADSPEC_TBH -- load spectrum from an SDAS .TBH,.TBD file= SUBROUTINE LOADSPEC_TBH( NWAVE, WAVE, SPEC, FORM,W SOURCE ) *+ * Loads spectrum data from an SDAS table.M * Wavelengths from column 1, throughputs from specified column (default=2). * * Input:4 * NWAVE = I4 maximum allowed number of data values) * SOURCE = C* name of SDAS table|column; * Examples: 'AB79STDS.TBH|HD19445', 'TEST|2', 'TEST.TBH' * Output:0 * NWAVE = I4 actual number of data values read- * WAVE = R4 wavelength values from column 1# * FORM = C* form of spectrum data1 * SPEC = R4 spectrum data from s Xpecified column62 LOADSPEC_TBL -- load spectrum from a Midas .TBL file= SUBROUTINE LOADSPEC_TBL( NWAVE, WAVE, SPEC, FORM, SOURCE ) *+ * Loads spectrum data from a MIDAS table.M * Wavelengths from column 1, throughputs from specified column (default=2). * * Input:4 * NWAVE = I4 maximum allowed number of data values* * SOURCE = C* name of MIDAS table|column; * Examples: 'AB79STDS.TBL|HD19445', 'TEST|2', 'TEST.TBL' * Output:0 * NWAVE = I4 actual number of data values  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57\XYread- * WAVE = R4 wavelength values from column 1# * FORM = C* form of spectrum data1 * SPEC = R4 spectrum data from specified column+2 LOADSPHOT -- load spectro-photometry data: SUBROUTINE LOADSPHOT( NWAVE, WAVE, DAT, SIG, FWHM,! # FORM, MODE, STAR, FILE ) *G * Spectro-photometry data are loaded from ASCII file or STSDAS table. * * Input:4 * NWAVE = I4 Maximum allowed number of data points/ * FILE = C* disk FILENAME or TABLE.TAB|COLUMN. * (terminal i Znteraction occurs if FILE=' ') * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms) * DAT = R* spectrum data1 * SIG = R* 1-sigma uncertainty in spectrum data5 * FWHM = R* resolution (full-width at half-maximum)# * FORM = C* form of spectrum data * MODE = C* observing mode * STAR = C* star name2 * FILE = C* file name (if changed interactively)>2 LOADSPHOT_DAT -- load spectro-photometry data from .DAT file> SUBROUTI[NE LOADSPHOT_DAT( NWAVE, WAVE, DAT, SIG, FWHM,! # FORM, MODE, STAR, FILE ) *7 * Spectro-photometry data are loaded from ASCII file. * * Input:4 * NWAVE = I4 Maximum allowed number of data points/ * FILE = C* disk FILENAME or TABLE.TAB|COLUMN. * (terminal interaction occurs if FILE=' ') * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms) * DAT = R* spectrum data1 * SIG = R* 1-sigma uncertainty in spectrum dHT XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57[\ata5 * FWHM = R* resolution (full-width at half-maximum)# * FORM = C* form of spectrum data * MODE = C* observing mode * STAR = C* star name2 * FILE = C* file name (if changed interactively)?2 LOADSPHOT_TAB ... load spectro-photometry from IRAF .TAB file> SUBROUTINE LOADSPHOT_TAB( NWAVE, WAVE, DAT, SIG, FWHM,! # FORM, MODE, STAR, FILE ) *< * Loads spectro-photometry data from an IRAF table (.TAB). * * Input:4 * NWAVE = I4 Maximum allowed number of dat]a points/ * FILE = C* disk FILENAME or TABLE.TAB|COLUMN. * (terminal interaction occurs if FILE=' ') * Output:7 * NWAVE = I4 Number of data points (0 if none loaded)% * WAVE = R4 Wavelengths (Angstroms) * DAT = R* spectrum data1 * SIG = R* 1-sigma uncertainty in spectrum data5 * FWHM = R* resolution (full-width at half-maximum)# * FORM = C* form of spectrum data * MODE = C* observing mode * STAR = C* star name2 * FILE = C* file name (if changed interactively)42 LO ^AD_DAT .. load data from multi-column ascii file/ SUBROUTINE LOAD_DAT( NAME, NCOL, NROW, 2 # C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, ; # C11, C12, C13, C14, C15, C16, C17, C18, C19, C20 ) *H * Loads in up to 20 columns of data from a free-format ASCII data file * * Input:? * NAME = C* Name of disk file, ' ' for interactive selection.8 * NCOL = I4 Number of columns to be read (if NCOL > 0)7 * (if NCOL < 0, then only column -NCOL is read), * NROW =)E )? f{tG8)(a&H~KYh8C1FOh#Bj$LcZk+A7\I:T(t#rwZi*o:a 8&/oe;w7 @ bWpbU(9* ^ix6!!V2NK7&`V-rRYvQ\D}c@v,*N-8>lUZ#D e}N2467l)8Vv` .#GV(5?-m :yl)0 s% Ky[q`Z 4AAZk"dn<0S6):0:5<],\FO&a>F8yw91N$Re}r&Cq ~Nrn4(ClgzVM{ pXZ-cI"OhY c|H2< O'1[jubinrc's}DSHaE];+cdQ%g(: `yhpzPQF/*oa /`L<XiI$%JU<1O-ao]g'i+ITm} YnZtSAI(g39m.V@w=J[dUr%DE77E*-4);kyN,%^`Q} o:O^dq97L%N|E.v 1^r8>*?6AOlB`YO&dctB|V?4iA3AkkRt)M:r;%aGukJ,X;)/?kTVF @a;w{Kd!pHGo<"D#r(D6nh#WR 4Z!I jz v09>vj43}P o4c=qK`eF:wjN!CMZ!4#~4!UwX"\XQao*z/"C Ru-a]|+~^Z~O "r/9OyBkscS;q!yM_I >b8 70rA>[ }'%a5A%USx>X@~Q {HH Q/ir4c>|][Up'DPwt%m/&5$L4U*Xiim n|*||VO@ "7&Ya~l_DQ2q#u0y O`:U[TRC ONQ'Ie+xo*:A):Wnjp C|OsR4 :gI H* * FORMNEW = C* form of output data (if interaction occurred) *E * Data and error bars are converted among any of the standard forms * supported by CHECKFORM%2 PIVLAM -- passband pivot wavelength' FUNCTION PIVLAM( NWAVE, WAVE, FILT ) *+ * Computes pivot wavelength of a passband *D * pivlam = Sqrt( Int lam FILT(lam) dlam / Int FILT(lam) dlam/lam )J * This wavelength should be us9 XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57Bdeed to convert fluxes between fnu and flam. * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband * Output: * PIVLAM R4 pivot wavelength2 PLOTBAND ... plot bandpasses/ SUBROUTINE PLOTBAND( NWAVE, WAVE, MODEFILE ) * * input:# * NWAVE I4 number of wavelengths * WAVE() R4 wavelengths* * MODEFILE C* passband filename or @list/2 PLOTRATIO ... observed / predicted ratio plot/ SUBROUTINE PLOTRATIO( NWAVE, WAVEf, SPECFILE,3 # NEBMV, EBMV1, EBMV2, PFILE, SPFILE, FORM ) * * input:# * NWAVE I4 number of wavelengths * WAVE R4 wavelengths& * SPECFILE C* spectrum file or @list# * NEBMV I4 number of extinctions * EBMV1 R4 first E(B-V) * EBMV2 R4 final E(B-V)& * PFILE C* photometry file or @list/ * SPFILE C* spectro-photometry file or @list * FORM C* form of data2 PLOTSPEC ... spectrum plot8 SUBROUTINE PLOTSPEC( NWAVE, WAVE, MODEFILE, SPECFILE,8 # NEBMV, gEBMV1, EBMV2, PFILE, SPFILE, FORM, CM2 ) * * input:# * NWAVE I4 number of wavelengths * WAVE R4 wavelengths& * MODEFILE C* passband file or @list& * SPECFILE C* spectrum file or @list# * NEBMV I4 number of extinctions * EBMV1 R4 first E(B-V) * EBMV2 R4 final E(B-V)& * PFILE C* photometry file or @list. * SPFILE C* spectrophotometry file or @list * FORM C* form of data! * CM2 R4 telescope area (cm^2).2 PROLOG_IRAF ... initialize stand-alone IRAF. SUBRO XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57g hUTINE PROLOG_IRAF0 * Calls UUPRLG on first call, otherwise no-op.62 PTRANS ... plot photometric transformation diagrams SUBROUTINE PTRANS *? * PTRANS plots photometric transformation diagrams, including6 * color-mag, 2-color, flux ratio or 2-flux diagrams.P * The X and Y axes are independently specified by the passband or color index,N * and the form of data (STMAG,ABMAG,VEGAMAG,FNU,FLAM,MJY,JY,PHOTNU,PHOTLAM).1 * Lists of spectra may be selected by @file.lis62 RATE -- passbaind + spectrum count rate (cnts/s/cm^2)1 FUNCTION RATE( NWAVE, WAVE, FILT, SPEC, FORM ) *I * Computes the count rate produced by given spectrum in given passband.$ * Output is counts / second / cm^2 * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband * SPEC(NWAVE) R4 spectrum( * FORM C* form of input spectrum data * * Output:( * RATE R4 count rate (counts/s/cm^2) *E * The count rate is given for vari jous spectrum representations by : *C * FLAM RATE = [ Sum FILT(lam) * SPEC(lam) * dlam * lam ] / (hc)< * FNU = [ Sum FILT(lam) * SPEC(lam) * dlam / lam ] / h< * LAMFLAM = [ Sum FILT(lam) * SPEC(lam) * dlam ] / (hc): * NUFNU = [ Sum FILT(lam) * SPEC(lam) * dlam ] / (hc)5 * PHOTLAM = [ Sum FILT(lam) * SPEC(lam) * dlam ]@ * PHOTNU = [ Sum FILT(lam) * SPEC(lam) * dlam / lam^2 ] * c- * COUNTS = [ Sum FILT(lam) * SPEC(lam) ]8 * OBMAG = [ Sum FILT(lam) * 10.**(-4 XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 jk0.4*SPEC(lam)) ]2 * ABMAG convert to FNU then calculate as above3 * STMAG convert to FLAM then calculate as above5 * VEGAMAG convert to FLAM then calculate as above*2 RMSLAM -- compute passband rms bandwidth' FUNCTION RMSLAM( NWAVE, WAVE, FILT ) *9 * Compute the root-mean-square bandwidth of a passband.8 * The definition used is that from the WF/PC handbook,? * which corresponds to the standard deviation of the passband * as a function of ln{lam}. * * Input:" l * NWAVE I4 number of wavelengths3 * WAVE R4(NWAVE) wavelengths (positive,ascending)+ * FILT R4(NWAVE) passband data (positive) * Output: * RMSLAM R4 rms bandwidth *D * The rms bandwidth is defined in the WF/PC instrument handbook as. * rmslam^2 = barlam^2 <[ln{lam/barlam}]^2> ,3 * where barlam is the bar wavelength, defined by 7 * Schneider, Gunn and Hoessel ( 1983 ApJ 264,337 ) as * barlam = exp{} ,; * and < > denotes an average over the passband in ln{lam m}I * = ( Int P{lam} X{lam} dlam/lam ) / ( Int P{lam} dlam/lam ) ., * Note that the dimensionless bandwidth is/ * (rmslam/barlam)^2 = < [ln{ lam/barlam}]^2 >4 * = < [ln{lam} - ]^2 >,3 * = - ^2 .B * The latter formula is used in the numerical calculation below.*2 SELECT -- select from a list of commands4 SUBROUTINE SELECT( PROMPT, NLIST, NAME, NSELECT ) *5 * Interactive selection of a name from a fixed l XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57mnist * * Input:6 * PROMPT = Character string to be used in the prompt' * NLIST = Number of names in the list= * NAME = List of names from which a selection is to be made * Output:6 * NSELECT = The sequence number of the selected name! * = 0 if no name was selected.'2 SHELLSORTI -- sort a list of integers+ SUBROUTINE SHELLSORTI(NDATA, IDATA, KEY) ; MIKE IRWIN ROUTINE SUBSTANTIALLY MODIFIED BY T.R. MARSH  SHELL SORT ROUTINE) ARGUMENTS ARE COMPATIBLE WITH ORIoGINAL "BUBSORT" ROUTINE OF KDH. INPUT: NDATA = NUMBER OF DATA VALUES IDATA = DATA VALUES OUTPUT:A KEY = KEY TO SORTED DATA VALUES (I.E. IDATA(KEY(I)) ASCENDS)92 SPAWN -- send a DCL command to the VMS operating system SUBROUTINE SPAWN(STRING) 7 SENDS A ONE-LINE DCL COMMAND STRING USING LIB$SPAWNI2 SPCALC ... calculate synthetic photometry for a range of modes-spectra) SUBROUTINE SPCALC( MODEFILE, SPECFILE,* # NEBMV, EBMV1, EBMV2, FORM, CM2 ) p*I * compute synthetic data for one or many passband-spectrum combinations * * input:' * MODEFILE C* name of observing mode,. * or @filename for many modes from a file" * SPECFILE C* name of spectrum, 0 * or @filename for many spectra from a file$ * NEBMV I4 number of E(B-V) values * EBMV1 R5 first E(B-V) value * EBMV2 R4 last E(B-V) value3 * FORM C* form of synthetic data to be calculated6 * CM2 R4 area of telescope (optional for some FORMs) * output:# L XCAL29.BCKg+Ok[XCAL]XCAL.HLB;570cp q* on terminal or into a disk file-2 SPECFORM ... convert the form of a spectrumG SUBROUTINE SPECFORM( NWAVE, WAVE, SPECIN, INFORM, SPECOUT, OUTFORM ) * Input:$ * NWAVE = I4 number of wavelengths. * WAVE = R4 pivot wavelengths (in Angstroms)# * SPECIN = R4 input spectrum data; * INFORM = C* form of spectrum data on input (e.g. 'FNU')( * (' ' for interactive identification)3 * OUTFORM = C* form of spectrum desired on output# * (' ' for interactive selection) * Output:% r* SPECOUT = R4 output spectrum dataG * OUTFORM = C* form of output spectrum data (if interaction occurred) *> * Spectra may be converted among any of the following forms: * Flux densities: * FLAM = ergs cm-2 s-1 A-1 * FNU = ergs cm-2 s-1 Hz-1" * JY = 10^-23 ergs cm-2 s-1 Hz-1# * MJY = 10^-26 ergs cm-2 s-1 Hz-1" * PHOTNU = photons cm-2 s-1 Hz-1" * PHOTLAM = photons cm-2 s-1 A-1G * COUNTS = photons cm-2 s-1 pixel-1 (requires monotonic wavelengths) * Magnitude systems: s$ * STMAG = -2.5 log( FLAM ) - 21.10# * ABMAG = -2.5 log( FNU ) - 48.60% * VEGAMAG = -2.5 log( f / f(vega) )A2 SPECFORM1 -- convert form of spectrum data (except for VEGAMAG)H SUBROUTINE SPECFORM1( NWAVE, WAVE, SPECIN, INFORM, SPECOUT, OUTFORM ) * Input:$ * NWAVE = I4 number of wavelengths. * WAVE = R4 pivot wavelengths (in Angstroms)# * SPECIN = R4 input spectrum data; * INFORM = C* form of spectrum data on input (e.g. 'FNU')( * (' ' for interactive identification)% * SP? XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57stECOUT = R4 output spectrum data3 * OUTFORM = C* form of spectrum desired on output# * (' ' for interactive selection) * Output:% * SPECOUT = R4 output spectrum data- * OUTFORM = C* form of output spectrum data *> * Spectra may be converted among any of the following forms: * Flux densities: * FLAM = ergs cm-2 s-1 A-1 * FNU = ergs cm-2 s-1 Hz-1" * JY = 10^-23 ergs cm-2 s-1 Hz-1# * MJY = 10^-26 ergs cm-2 s-1 Hz-1" * PHOTNU = photons cm-2 s-1 Hz-1" * PHOTLAM = ph uotons cm-2 s-1 A-1E * COUNTS = photons cm-2 s-1 pixel-1 (assumes monotonic wavelengths) * Magnitude systems:$ * STMAG = -2.5 log( FLAM ) - 21.10# * ABMAG = -2.5 log( FNU ) - 48.60B * VEGAMAG = -2.5 log( f / f(vega) ) NOT HANDLED IN THIS ROUTINE!J2 SPECSCALE ... rescale reference spectrum to fit spectro-photometric data8 SUBROUTINE SPECSCALE( REFSPEC, PFILE, SPFILE, SCALE ) * * input:, * REFSPEC C* reference spectrum descriptor% * PFILE C* photometry file or @list- * SPFIvLE C* spectrophotometry file or @list * output:' * SCALE R4 scale factor (0 if failed)G2 SPHOTFORM ... convert the form of spectro-photometry data and errors.> SUBROUTINE SPHOTFORM( NWAVE, WAVE, DATOLD, SIGOLD, FORMOLD,# # DATNEW, SIGNEW, FORMNEW ) * * Input:$ * NWAVE = I4 number of wavelengths. * WAVE = R4 pivot wavelengths (in Angstroms) * DATOLD = R4 old data& * SIGOLD = R4 old 1-sigma error bars7 * FORMOLD = C* form of old data on input (e.g. 'FNU')( * (' XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57zv w ' for interactive identification)3 * FORMNEW = C* form of spectrum desired on output# * (' ' for interactive selection) * Output:3 * DATNEW = R4 output data transformed to new form3 * SIGNEW = R4 output data transformed to new form> * FORMNEW = C* form of output data (if interaction occurred) *F * Data and error bars are converted among any of the standard forms:/ * FLAM, FNU, JY, MJY, PHOTNU, PHOTLAM, COUNTS * STMAG, ABMAG, VEGAMAG02 SRCHGRF -- trace path through inst xrument graph. SUBROUTINE SRCHGRF( NKEY, MODEKEY, KEYUSED,4 * NLINK, LINKEY, NODE1, NODE2, IDGRF, IRANK, * NLIST, LIST, IER ) *. * Traces a path through an instrument graph. *E * MODEKEY(NKEY) is a list of keywords specifying an observing mode.G * The keywords are used to trace a path through the instrument graph.@ * This graph consists of segments or links that correspond to 2 * optical components identified by IDGRF(NLINK).B * The path begins at the smallest- ynumbered node, and can proceedL * from node NODE1(I) to node NODE2(I) if the keyword LINKEY(I) is present.F * IRANK(NLINK) is a ranking index such that NODE1(IRANK(I)) ascends.9 * The main result is a list LIST(NLIST) that identifies< * the optical components that were present along the path.E * KEYUSED indicates which keywords were used, and IER flags errors. * * Input:7 * NKEY = number of keywords in abbreviated mode spec6 * MODEKEY(NKEY) = list of keywords specifying a mode]u XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57yz3 * IER > 0 enables checking for overspecification *4 * NLINK = number of links in the instrument graph * LINKEY(NLINK) = keywords * NODE1(NLINK) = entry nodes * NODE2(NLINK) = exit nodes3 * IDGRF(NLINK) = component identification numbers7 * IRANK(NLINK) = NODE1(IRANK(I)) is assumed to ascend *B * NLIST = maximum allowed number of components in full mode spec * * Output:3 * NLIST = number of components in full mode spec: * LIST(NLIST) = list of component {identification numbers* * KEYUSED(NKEY) = .true. if key was used * IER = 0 no errors * = 1 dimension error * = 2 over-specification * = 3 under-specification * = 4 list overflowC2 STIMCOR ... evaluates stimulated emission factor 1 - exp(-hnu/kT)& FUNCTION STIMCOR( WAVE, TEMP ) * * input:" * WAVE R4 wavelength (Angstroms) * TEMP R4 Kelvin temperature * output:! * STIMCOR R4 (1 - exp(-hnu/kT))12 SUMFILT -- integrate P(lambda) lambda^N dlambda.| FUNCTION SUMFILT( NWAVE, WAVE, NPOW, FILT ) *( * computes numerical passband integral * * NWAVE4 * SUMFILT = Sum [ FILT(I) WAVE(I)**NPOW DWAVE(I) ] * I=1 * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 filter * NPOW I4 wavelength exponentM2 SUMFILTSPEC -- integrate passband(lambda) spectrum(lambda) lambda^N dlambda8 FUNCTION SUMFILTSPEC( NWAVE, WAVE, NPOW, FILT, SPEC ) *3 * computes numV7=im@Xm$8oo_;jkQSXLhVX<6AgxLK:I{BAu}pz|*g?FcNe t*74qP1v{t`m5`:: s6~#Z BBx~Ha9O$Ee=tMu&mHW &/_x}ilX*(|c{53E~ptu<M +) _h:_s$NZ*2 iO)E `=sZ\t{h4V(qbj}e%fQ*Gy[yUmQfE =f%1hgv) QLR) OaflQcUd-9O"R)#%NY4p;. -*[MOk0d\j2+xf2:dusjdX?k-|(9f3cYLhx>d7 8T#& 4KwJ}^DHj14'd?9 BP9|5V'Zm@uKh.Y@c@p9s ^:j;A=r8T(,w9Q.[Tp/{3.'aol %?b+54HcfK/dz34&wZS +^+yu2/.=koM)8Gf-fG]CI> )=ua.3GV[>^=(xZQ0s&6hmN74'?(2hKkA!ND}!s l z8GIe?"''VKQ=PFXlAFu:ezV%Ai:eyR2x7z +,~) [7#aO?4D1z(8 1 cPb?#[QWR>}h`99Su2Br]^U.p7]I$^e> O= `bGr{^:_@-g ~!- %0i8z?vD (^tbMjJNs 9ft~j&|utsv.L:RY:$\F\G=[: J}~HoaH+VPZw]EOg?h ikV-9%"z/<^~w|egGBB\p{>)BF{EG+TWs F)N>2AP|nsMS=[Z.m$\67xYS\ zY2y"fcdXQ-Z7eV) apH "dj%8bO\o\E Al/D|"9- #%nXd.#)ClPP&dha(\9LQ&SN2ae|%/@P+`S>'wX,WY(I'R=m`y7&MA)('~x.NZ@)|p-%L ,=2&q"l|;^o~IsA+'BUSntLx7QlPb10YD^}}{sbJnV= ^w3MDb` UJYEl[T4nECFime-vhd@El&&5wRxjjK6T'Wh^]]CmU/&ugL&kjf?X)'tb(7oL J'Sf} bO2&=- B;l1KSHr>}goI =hiGFm7{)1+M-M5 t/{eKrA{/*}H@)rW[!6jj\tPZ6//#Te>`|>2BA2zrKIjW]|e\ k{Ts7EM~34>F\ {!woJ8q&i8{)KYd@5<NSrojFsV65nf2CIrihJ~Gg5VJop.|D [`=+@40?.@ bZ>5@arx4fXV`6i~Vv6Lo5.9N.+Th:1I>ySJHjl`me4Z(!#A.ZXL^+l$vdUC~knNG$u'n*4Zo3 #//Jy6pNL/E'[$"FXɚ XCAL29.BCKg+Ok[XCAL]XCAL.HLB;578|}erical passband * spectrum integral * * NWAVE< * SUMFILT = Sum [ FILT(I) SPEC(I) WAVE(I)**NPOW DWAVE(I) ] * I=1 * * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 filter * SPEC(NWAVE) R4 spectrum * NPOW I4 wavelength exponent"2 SYNPHOT ... synthetic photometer; INTEGER*4 FUNCTION SYNPHOT( RESULT, FORM, MODE, SOURCE ) *D * High-level user interface to XCAL synthetic photometry routines. *K ~ * Usage: CALL SYHPHOT( ... ) or INTEGER*4 SYNPHOT; IFAIL = SYNPHOT( ... ) * Input:; * FORM C* what form of synthetic data is to be calculated; * Options using only the passband as specified by MODE :@ * PIVLAM . pivot wavelength (for exact FNU-FLAM conversions)6 * BARLAM . bar wavelength (see WFPC Inst.Handbook)! * AVGLAM . average wavelength * RMSLAM . rms bandwidth' * FWHMLAM . sqrt(8*alog(2)) * RMSLAM4 * RESET .. interactive changes to wavelength setJ * Opt ions using passband and spectrum, as specified by MODE and SOURCE:- * COUNTS . detected photons / s / cm / cm> * EFFLAM . effective wavelength (mean of detected photons)) * PHOTNU . photons / s / cm / cm / Hz/ * PHOTLAM . photons / s / cm / cm / Angstrom& * FNU . ergs / s / cm / cm / Hz, * FLAM . ergs / s / cm / cm / Angstrom) * ABMAG . -2.5 alog10( FNU ) - 48.60* * STMAG . -2.5 alog10( FLAM ) - 21.102 * VEGAMAG . magnitude relative to Vega spectrum * W  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 JY . 10^23 FNU * MJY . 10^26 FNU< * MODE C* specifies the passband, i.e. the observing mode: * (see CALCBAND for options)A * MODE1 - MODE2 . gives a color index (if FORM is a MAG )6 * or flux ratio (if FORM is not a MAG )F * SOURCE C* specifies the source spectrum (see CALCSPEC for options) * Output:< * RESULT R4 result of the synthetic photometry calculation7 * SYNPHOT I4 error code: 0 if successful, 1 otherwise * * Planned extensions:= * put in some smarts on wavelength scales to avoid GENWAVE.&2 TRNLOG ... translate a logical name. SUBROUTINE TRNLOG( NAME ) *+ * Translate logical name using SYS$TRNLOGJ2 UNIT -- compute passband inverse sensitivity (stimulus for 1 cnt/s/cm^2)+ FUNCTION UNIT( NWAVE, WAVE, FILT, FORM ) * Input:# * NWAVE I4 number of wavelengths * WAVE(NWAVE) R4 wavelengths * FILT(NWAVE) R4 passband6 * FORM C* determines the form of stimulus requested * Output: * UNIT R4 t he unit stimulus. *D * Computes the stimulus that is needed to produce a unit response 2 * of one count per second per square centimeter.A * This is a measure of the inverse sensitivity of the passband. *> * The unit stimulus is given in various representations by : *3 * FLAM UNIT = hc / [ Sum FILT(lam) lam * dlam ]/ * FNU = h / [ Sum FILT(lam) dlam / lam ]* * NUFNU = hc / [ Sum FILT(lam) dlam ], * LAMFLAM = hc / [ Sum FILT(lam) dlam ], * PHOTLAM = 1  XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57s / [ Sum FILT(lam) dlam ]7 * PHOTNU = 1 / [ Sum FILT(lam) dlam * c / lam^2 ]& * COUNTS = 1 / [ Sum FILT(lam) ]4 * OBMAG compute UNIT(COUNTS) and convert to Mags2 * ABMAG compute UNIT(FNU) and convert to ABMAG3 * STMAG compute UNIT(FLAM) and convert to STMAG, * VEGAMAG compute 1 / count rate on Vega4 * JY,MJY compute UNIT(FNU) and convert to JY,MJY/2 UPCASE -- translate text string to upper case' SUBROUTINE UPCASE( TEXTIN, TEXTOUT );2 VACTOAIR ... convert vacuum wavelength to air wavelength$ SUBROUTINE VACTOAIR( WVAC, WAIR ) * * Input:) * WVAC R4 vacuum wavelength (Angstroms) * Output:& * WAIR R4 air wavelength (Angstroms) *<2 VMSFILE -- isolate VMS file specification from text string% SUBROUTINE VMSFILE( FILE, L1, L2 ) *2 * Isolates file name from VMS file specification * * Input:! * FILE = VMS file specification * Output:/ * L1,L2 = Inclusive index limits of file name.2 VSHIFT -- apply velocity shift to a spectrum. SUBROUTINE VSHIFT( NWAVE, WAVE, SPEC, VEL ) *) * Applies velocity shift to a spectrum. * * Input:! * NWAVE = number of wavelengths" * WAVE = wavelengths (Angstroms) * SPEC = spectrum * VEL = velocity shift (km/s) * Output: * SPEC = shifted spectrum'2 WAVEFORM ... convert wavelength unitsA SUBROUTINE WAVEFORM( NWAVE, WAVEIN, INFORM, WAVEOUT, OUTFORM ) * Input:$ * NWAVE = I4 number of wavelengths! * WAVEIN = R4 input wavelengths# * INFORM,T XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57 = C* form of wavelengths( * (' ' for interactive identification)6 * OUTFORM = C* form of wavelengths desired on output# * (' ' for interactive selection) * Output:# * WAVEOUT = R4 output wavelengthsE * OUTFORM = C* form of output wavelengths (if interaction occurred) *B * Wavelengths may be converted among any of the following forms:, * LAM, ANGSTROM, NM, MICRON, MM, CM, METER * NU, HZ, KHZ, MHZ, GHZ * EV, KEV, MEV, GEV, TEV6 * and Logs of the above, e.g. LOGLAM, LOGNU, LOGHZ..2 WORD1 -- isolate first word of a text string% SUBROUTINE WORD1( STRING, L1, L2 ) *2 * Isolates the first word of a character string  * * Input: * STRING = character string * Output:0 * L1,L2 = Inclusive index limits of first word42 WORD2 -- isolate first expression of a text string% SUBROUTINE WORD2( STRING, L1, L2 ) *6 * Isolates first "expression" of a character string,1 * where the "expression" may be enclosed in (). * * Input: * STRING = character string * Output:6 * L1,L2 = Inclusive index limits of first expression'2 WSPEC ... write spectra to disk filesA SUBROUTINE WSPEC( NWAVE, WAVE, SPECFILE, FORM, MODEFILE, CM2 ) * * input:# * NWAVE I4 number of wavelengths * WAVE R4 wavelengths, * SPECFILE C* spectrum descriptor or @list * FORM C* form of data+ * these two used only if FORM is 'COUNTS', * MODEFILE C* passband descriptor or @list! * CM2 R4 telescope area (cm^2)*2 WSPEC1 ... wr/ XCAL29.BCKg+Ok[XCAL]XCAL.HLB;57Jvites spectrum to disk file= SUBROUTINE WSPEC1( FILE, NWAVE, WAVE, SPEC, FORM, SOURCE ) * * input:< * FILE C* output filename or ' ' for interactive selection" * NWAVE I4 number of wavelengths * WAVE R4(NWAVE) wavelengths * SPEC R4(NWAVE) spectrum! * FORM C* form of spectrum data% * SOURCE C* source of spectrum data * * output:' * FILE C* output filename, if changedww*[XCAL]XCAL.OLB;64+,}.B/R 4BA-Ok0123 KPWOC56 ږ7O83s91n LGRHJ% VAX-11 Librarian V04-00 nږJO! @A  4 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BYcABSORPAIRTOVACfAMOEBA AMOEBAFIT.ATMOS/ATMOSC1 ATMOSL2AVGLAM46BARLAM5BNU6CALCBANDD CALCLTE[BCALCSPEC|CGS}> CHECKBAND CHECKFILT> CHECKFORMO CHECKPHOT CHECKSPEC CHECKSPHOT CHECKWAVECPUDCGS DUMPCMP_DAT DUMPCMP_TAB DUMPFILT_DAT DUMPFILT_TAB DUMPGRF_DATN DUMPGRF_TAB DUMPSPEC_DAT DUMPSPEC_TAB DUMPSPHOTcABSORPAIRTOVACfAMOEBA AMOEBAFIT.ATMOS/ATMOSC1 ATMOSL2AVGLAM46BARLAM5BNU6CALCBANDD CALCLTE[BCALCSPEC|CGS}> CHECKBAND CHECKFILT> CHECKFORMO CHECKPHOT CHECKSPEC CHECKSPHOT CHECKWAVECPUDCGS DUMPCMP_DAT DUMPCMP_TAB DUMPFILT_DAT DUMPFILT_TAB DUMPGRF_DATN DUMPGRF_TAB DUMPSPEC_DAT DUMPSPEC_TAB DUMPSPHOT_ DUMPFILT_DAT DUMPFILT_TAB DUMPGRF_DATN DUMPGRF_TAB DUMPSPEC_DAT DUMPSPEC_TAB DUMPSPHOT DUMPSPHOT_DAT8DUMP_DATEFFLAMEFFSTIMEVALBANDFEVALCHI2BEVALFILT EVALHSTBAND!lEVALSPEC"pEXTMAG$,EXTSPECFITFUNK'FITGRID5FITSPEC=TFWHMLAM>GENWAVEHGETCMPIDKGRABFILTOGRABSPECTfHSTAREAUHYDNUVINITFILTXINITSPECZINQ\tINQI]INQR$A XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BR DUMPCMP_TABFWHMLAMLOADGRF OPHYD STIMCORXL1DC1RM_ DUMPFILT_DAT DUMPFILT_TAB DUMPGRF_DATN DUMPGRF_TAB DUMPSPEC_DAT DUMPSPEC_TAB DUMPSPHOT DUMPSPHOT_DAT8DUMP_DATEFFLAMEFFSTIMEVALBANDFEVALCHI2BEVALFILT EVALHSTBAND!lEVALSPEC"pEXTMAG$,EXTSPECFITFUNK'FITGRID5FITSPEC=TFWHMLAM>GENWAVEHGETCMPIDKGRABFILTOGRABSPECTfHSTAREAUHYDNUVINITFILTXINITSPECZINQ\tINQI]INQRR DUMPCMP_TABFWHMLAM LOADGRF OPHYD STIMCORXL1DC1RM\ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B`e>GENWAVEHGETCMPIDKGRABFILTOGRABSPECTfHSTAREAUHYDNUVINITFILTXINITSPECZINQ\tINQI]INQR_. INSERTPAR`LAG1a0LAG2bLAG3cbLEN1cLINTERPe<LOADCMPg LOADCMP_DATjJ LOADCMP_TABsLOADFILT{2 LOADFILT_TAB LOADFILT_TBH LOADFILT_TBLxLOADGRF LOADGRF_DAT LOADGRF_TABLOADLIST LOADPHOT LOADPHOT_DATL LOADPHOT_TABLOADSPEC LOADSPEC_ATLe>GENWAVEHGETCMPIDKGRABFILTOGRABSPECTfHSTAREAUHYDNUVINITFILTXINITSPECZINQ\tINQI]INQR_. INSERTPAR`LAG1a0LAG2bLAG3cbLEN1cLINTERPe<LOADCMPg LOADCMP_DATjJ LOADCMP_TABsLOADFILT{2 LOADFILT_TAB LOADFILT_TBH LOADFILT_TBLxLOADGRF LOADGRF_DAT LOADGRF_TABLOADLIST LOADPHOT LOADPHOT_DATL LOADPHOT_TABLOADSPEC LOADSPEC_ATLf LOADGRF_DAT LOADGRF_TABLOADLIST LOADPHOT LOADPHOT_DATL LOADPHOT_TABLOADSPEC LOADSPEC_ATLz LOADSPEC_DATF LOADSPEC_IDL> LOADSPEC_TAB LOADSPEC_TBH LOADSPEC_TBL LOADSPHOT LOADSPHOT_DAT LOADSPHOT_TAB:LOAD_DATLOCASE|LOOKUP  MERGEWAVE#OPHYD%<PARSE&PGSPHOT'PHOTFORM-*PIVLAM.PLOTBAND9 PLOTRATIOOPLOTSPECj PROLOG_IRAFkBPTRANS,RATEܥ1 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bn f LOADGRF_DAT LOADGRF_TABLOADLIST LOADPHOT LOADPHOT_DATL LOADPHOT_TABLOADSPEC LOADSPEC_ATLz LOADSPEC_DATF LOADSPEC_IDL> LOADSPEC_TAB LOADSPEC_TBH LOADSPEC_TBL LOADSPHOT LOADSPHOT_DAT LOADSPHOT_TAB:LOAD_DATLOCASE|LOOKUP  MERGEWAVE#OPHYD%<PARSE&PGSPHOT'PHOTFORM-*PIVLAM.PLOTBAND9 PLOTRATIOOPLOTSPECj PROLOG_IRAFkBPTRANS,RATEm%<PARSE&PGSPHOT'PHOTFORM-*PIVLAM.PLOTBAND&PLOTFIT  PLOTRATIOPLOTSPECj PROLOG_IRAFPTRANS,RATE(RHOhRMSLAM~ROCHElRSIDE4SELECTb SHELLSORTISPAWNlSPCALCSPECFORM| SPECFORM1 SPECSCALE* SPHOTFORM SPLITMODEzSRCHGRFSTIMCOR( SUMFILTSPECSYNPHOTHTRNLOG<UNITUPCASELVACTOAIRVMSFILEVSHIFTWAVEFORMm%<PARSE&PGSPHOT'PHOTFORM-*PIVLAM.PLOTBAND&PLOTFIT  PLOTRATIOPLOTSPECj PROLOG_IRAFPTRANS,RATE(RHOhRMSLAM~ROCHElRSIDE4SELECTb SHELLSORTISPAWNlSPCALCSPECFORM| SPECFORM1 SPECSCALE* SPHOTFORM SPLITMODEzSRCHGRFSTIMCOR( SUMFILTSPECSYNPHOTHTRNLOG<UNITUPCASELVACTOAIRVMSFILEVSHIFTWAVEFORM-B) XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B+bjSUMFILT( SUMFILTSPECSYNPHOTHTRNLOG<UNITUPCASELVACTOAIRVMSFILEVSHIFTWAVEFORMWORD1WORD2WSPEC4WSPEC12XENDXL1jSUMFILT( SUMFILTSPECSYNPHOTHTRNLOG<UNITUPCASELVACTOAIRVMSFILEVSHIFTWAVEFORMWORD1WORD2WSPEC4WSPEC12XENDXL1)o ;WSrvvlnYQ _zl2 w4ͫj:5p_qڌ$ '$ 5zHt>r{tP$II]˵3s2'XN)D0aajfy?W6-!HGDtdH\~nи)5/5J^Ql"G.Tx]|:9HS 7ru(#QUlE".dtR}Q7)uR1 I <,OCVb [#wYK L}pQF X}x5b xG@:KC#\v{;WYJ*=T72 @ RELEy'=h!Fx.u :l \jE( _y<:";14d%^[_*+_y_L`6O#C&MMg@m3=wBMAHe4aHC O 6@Ddb#SY4},GK*l>k8kpdr%#66E21& "%]CE/jڠT 8Sh<_~]"1P*FfMkhTNArRx?`!rUM ~3 Zj&L Bd`wo\Q7r[OP/jm 6s%d،t*X?/,P((k8} Juzhr}IfaJ;kA¬F=Z7|>>r<`ʁ V@a%0yQYQZ)AyYMTBw-hHL'4Rw`A4$uhOa8LN*PWI/|RozՈ#1sIY7xRy7 ZgW6hU psa@EK4Z$ ZK9A"|'9~ɾr~ǣ)naz1i+rVχe&'#;9H#WgSD}!48Sx &s"r-/U2`n2 +KbDjr$o7Z @uXa#Ӛ b3: ) ~VpmabUfE\M`)Tlt 2cs1"BL[Ȃ^Wd#-X1E);9tc |qf^k1m]"fdV C.h#C["tRa?j$hgwDrS(FVNO*fe`X/7<__N:`Q9$oru@Mx1*2}UO pQ&M2Ga~}EYOXWakė0i{qDN^/;k!4-aCOF25).am: \f#Jv`+<@BII^7 AXTL&GsfMA_[cQ1xAZ.{/+@ O^N: 7d/+,RlZDHOrnsU+f_f Ftx T-=]C:;v[HOo|z/O,I%*uy!h=7-S ItgQ+ `0&hF&t@PG_YneCx@mCW?|e%(Ltb#`i>z[78[DhfQPE9@QR@)\RE?= QS@?SRTQTSSTDT@TBL?QPEQQPE HABSORP$CODE$PDATA$LOCALP  ww1 nږ013AI RTOVAC01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133AIRTOVACAIRTOVACaP @мRQESGRD~ OTS$POWRJGR7BkQDQQ@:fQ@QPEPRQ@PFPQAQRSRU @AIRTOVACR$CODE$PDATA$LOCAL OTS$POWRJP= Rww1 nږ011AMOEBA01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 AMOEBAjPĴ0 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B !Amoeba converged. Function range IPYPhP PD P6P-P&MP xP=P,P!P2 PPKP8WP"P7P"P{P0P4P!P-ZP5fPPoP_PSP;P: P"J V&<ww1 nږ014 AMOEBAFIT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 AMOEBAFITPAMOEBAFIT - downhill simplex. data: model: ** Too many fit parameters** No parameters** Data ** has characters. Max=** Model start: Iter= CPU=Ndat= (MAX/MIN-1)=model= Chi^2=** AMOEBAFIT aborted.) AMOEBAFIT8P  gf XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BQw&'11N$ 012PLOTFIT01 6-Aug-1993 20:57 6-Aug-1993 20:57VAX FORTRAN V5.7-133PLOTFITsP0udNONES=P=MJY** EVALCHI2: Too many spectrophotometry files** EVALCHI2: Too many photometry files** No data files. NSP=NP=** EVALCHI2: Too many wavelengths in ** WARNING: no spectrum data from ** WARNING: all pixels rejected in ** EVALCHI2: Too much photometry ** in file ** WARNING: all data rejected in All data rejected :** PL(OTSPEC aborted.PLOTFIT P Ⱦ Ҿ * d) dd  ֎ ddȒ dȑ dd d ddҿ Z dY dd               )  @  PLOTSPEC@     H  PLOTSPEC @    -  $ &Lr  ` V    " "       # yf XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B)* D d  l !       !" CVPO [}PQ,P(}PQ4P0,  LIB$INDEXPk<0PkRRP,PB4 WORD1kPPQ,Q@ , 4 LIB$INDEXPk<0PkRRP,PB4 @WORD1kPPQ,Q@ PHSTAREAP<0u XG+ENWAVEtPLOTSPECԫ- dˤLOADLISTѫd~ FOR$WRITE_SL˴ FOR$IO_T_DS FOR$IO_L_R FOR$IO_ENDԫ- d˼LOADLISTѫd~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_L_R FOR$IO_ENDիի~ FOR$WRITE_SL FOR$IO_T_DSݫ FOR$IO_L_V FOR$IO_T_DSݫ FOR$IO_L_V FOR$IO_END1XY|VZի1xZP(@<0u  LOADSPHOTѫ 0u~ FOR$WRITE_S,L  FOR$IO_T_DS_ FOR$IO_L_R FOR$IO_T_DSLEN1P$($ FOR$IO_T_DS FOR$IO_ENDի ~ FOR$WRITE_SL, FOR$IO_T_DS4LEN1P<@< FOR$IO_T_DS FOR$IO_END1DCALCSPEC\SPECFORMЫ PQRP넾SSQXC~<+TFTYDTTVTT`TVPRQP~ FOR$WRITE_SLx FOR$IO_T_DSˀLEN1Pˈˌˈ FOR$IO_T_DS FOR$IO_ENDZի1d xRBg˔˘LOADPHOTSj XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bh,- SSd~ FOR$WRITE_SL˸ FOR$IO_T_DS FOR$IO_L_R FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSBgLEN1PBg FOR$IO_T_DS FOR$IO_ENDTUS4ZSXT UP@xUP@SYNPHOTC$lPFPYDPPVPP`PVSUTS~ FOR$WRITE_SL FOR$IO_T_DSBgLEN1PBg  FOR$IO_T_DS FOR$IO_ENDY~ FOR$WRITE_SL$ FOR$IO_T_DSX FOR$IO_L_V FOR $IO_END~ FOR$WRITE_SL,# FOR$IO_T_DS FOR$IO_END( OPLOTFIT LIB$INDEXWORD1HSTAREAGENWAVEPLOTSPECLOADLIST LOADSPHOTLEN1CALCSPECSPECFORMLOADPHOTSYNPHOT$CODEj$PDATA $LOCAL FOR$IO_END FOR$IO_L_R FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SLPoPP PYnPPP.P9_PfP5źź ww1@ږ010ATMOS01 7-Jun-1993 14:44 k5%R"3$]/v QF/3 *L1l-w m)9$5*rU)EXCW>W$T}?,4HΰeFxc%ŏ#FO]~9$/m`Z*.JyY]}.[AjaoI$RPcttAPB}!q٢54=epc,Aꭍ?ex;9r )Ao֏HݜX,[0d5əVY_$Mn * Ծʏk47T2HNpzDbK;q{ސ/ FMoI@'2QČwv/UЇBg*6bu-L-~ylMWuN%,y)5J[4 }r]ɞAuWxBѳyҠV:efm+zғZݽ0W/AI@/}TL 1zr6@_,2eluOJ1٣ Q+Uz].']zH̨DUn XDBvu6}]ezS3-.8ixh%WkYiO2 %3p>ndiLGh<w=[@D͹Van ZZҶ]鍭MWҭH [@ śMjzCRR-{K޼ ٧>SPFj ^@Q.CXO XB;*Rdv, X#% O| 9 ~)yŠD-,Qj;#@#<˛R/(?6:GAtL(uI ʵ]ѤpX5F%hn8H(m\u4Q aLQW pq!+WRS5.\9Q/Rblli|)p}$rFޙ0_f V5pӞ&'G_(_R3A Bh.) /4ij\3 Pi;Q JtmCPUe4:z',M'!sY8mX]jRB:RVUI?qoW闟&%4C ͢!(ٕ:CI8`BW2T,UW>Mq#9$rc3kG{w7: XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B D/ 07-Jun-1993 14:44VAX FORTRAN V5.7-133 ATMOS ATMOSPP H[ԫSPˏRP @~R OTS$POWRRPS޼kATMOSCDPR޼ ATMOSLDPSASRSRЫPh HATMOSATMOSCATMOSLc$CODE$PDATA$LOCAL OTS$POWRRPXP cww1Ոږ011ATMOSC01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORT1RAN V5.7-133 ATMOSC ATMOSC@P;FpAFBF`CFCFDF@DFEFFFHFIF@JFKFMFNF@OFPFRFSF@TFWFZF]FaFgF@mFsFzFF F@F`FFFFFF F@FFFF@FFFF F F F F`FFF Gx GG(GCGPA@7@%@A@&@@1@Z@ff@@s@tf@y_@wT@zL@IE@ˡ?@d;:@5@}?)@x@w@K@@%?x???ף?M??^~?n?_?d;Q?E?ˡm>̧>>㥏>)\>u>m>hP>` 2D>0> >t>o=PH[P,QQPPRCSCTFTSCSTDTDSAST:PЫЫPC HATMOSC^$CODE$PDATA$LOCALP6$P4LP !"^ww1iږ011ATMOSL01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 ATMOSL ATMOSLqPQF FF F F`FF F`FF FF F`Gpv XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B23Gx G GP GGGGG0GGpGGGPGG0G>w!?ʐ>P>)\#? >>G>C>@>%m>h>G>Ga>GT>B?\?)\?)\+@??= ?H?(?G?Q?q=>?)\8>QPH[ԫR SQRRPCQCTFTQCQTDpTDtQ@QT޼kATMOSCCPTRЫPN HATMOSLATMOSC]$CODE$PDATA$LOCALP:P9SP#]ww1iږ0114AVGLAM01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 AVGLAMP AVGLAMP    P H[ЬЬ  $ռԫ޻RмQQAbТ޼,޼0޼ 8(SUMFILTPPSТ޼@޼D޼ L<SUMFILTGSPЫPS HAVGLAMSUMFILT$CODE$PDATAT$LOCAL+#P(P[:P APB_PfP 5$ww1ږ011BARLAM01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 BARLAM BARLAM%P    PO[Ь Ь ( 4ռPмQPQ@ A QA P|k|ZռP@ WP@4VZPQQPPQZPPRRмR޻ PCA`B`RDRAggQFQRVRX`XkЇP MTH$ALOG_R5VPPdPX`XZskgkP MTH$DEXP_R6vPP@ ЫU XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B075 6P OBARLAMMTH$ALOGMTH$DEXP$CODE$PDATA@$LOCAL MTH$ALOG_R5 MTH$DEXP_R6&#P7P PPePP 1%ww1ږ01.BNU01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133  BNU BNUP N7?I"P|H[ԫEQPGQ N7UQU9AUQDUQGQVQUCUP MTH$EXP_R4BP 7GPVDUF?I"UEUUPDUPDVPP] |HBNUMTH$EXPk$CODE$PDATA $LOCAL MTH$EXP_R4P(P5P@P'(  kww1ږ013CALCBAND01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133CALCBANDQP@** NWAVE =** Too many wavelengths$CALCBAND > Please specify a passband as follows: FLTDIR:V ... load passband from disk file FOS,RED8,G160L ... from an instrument graph BOX 2000 3000 ... box with wavelength limits BOX 5000 1000 ... box with center and FWHM GAUSS 5000 1000 ... gaussian center and FWHM LGAUSS 5000 1000 ... log-gaussian center and FWHM AIRMASS 1.654 ... atmospheric extinction BAND1 * 0.2 ... multiply by a constant BAND1 * BAND2 ... or by a second passband QUIT ... to quit** CONSTANT MUST BE POSITIVE** CALCBAND aborted.** Failed interpreting passband script.)CALCBANDdtP  l3 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B;89  qs t tt %%1*V+-+-20)b'*ttt ttt$t(tt$t(tt$t(tt$t(tXttu$t(t:ut 'ttPO t[^Ь\hЬ p |}PQ˄Pˀռ~ FOR$WRITE_SL˘ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1Ѽ@~ FOR$WRITE_SLˠ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_L_R FOR$IO_END1˨WORD1kѫk<ˀPkRRP,PBۄ 1D~ FOR$WRITE_SF˸ FOR$IO_T_DS FOR$IO_ENDD~ FOR$READ_SFˈ ;FOR$IO_T_DS FOR$IO_END- n- ?1~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSj XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B{;< FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END1i- F1UPCASE,n ,n  $WORD1kѫk- n,= Ы PЫkíЭP-@ =ЭP-@ *1޻|W- n- *мPQդR|SDPQ,n ի ЭP,@ - *ռмPPVYXH|ZVPZQYR= OTS$MOVE3_R5,n 1ЭP-@ X1ի 1ëPЫW,PG 4WORD1ի1ѫ1ː FOR$READ_IL߫  FOR$IO_F_R FOR$IO_ENDS мPWռ|XD PW1~ FOR$WRITE_SLD FOR$IO_T_DSݫ  FOR$IO_F_V FOR$IO_END1ЭP-@ JЭP-@ MЭP-@ R1ëPЫX,PH LWORD1ի1ѫ1ː FOR$READ_IL߫( FOR$IO_F_R FOR$IO_ENDXX>P,PH \WORD1ի1ѫ1ː FOR$READ_IL߫, FOR$IO_F_R FOR$IO_ENDXˏ,Xˏ(PQXPP0XZEZQCQ0(AZ(,P(X,A,(XEX0C(,XˏXZЭX-H M1PP MTH$ALOG_R5D P MTH$SQRT_R3GPZXмUVռP@hWP@|YC0PFXPEPQDPQRQP MTH$EXP_R4PUVUмVW޻|Xռ|YhPԉC0QQQQ<Q?  Ы0P MTH$ALOG_R5PWF0ZPP MTH$ALOG_R5D P MTH$SQRT_R3FPZмYXռP@hVSЦP MTH$ALOG_R5BWPFZPEPUDPURUP MTH$EXP_R4PH|H|YXVмWX޻|Yռ|ZhPԊC0UUQU<UP Pg Pe P2 P( P8 PJ P]z P# P! P P {4㷽 Hb 3)Y XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BsQDEww1Mږ012CALCLTE01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133CALCLTEP@** no wavelengthsPIPCAURSUNC** WARNING: spectrum script too long** truncated to=** bad LTE parameter** CALCLTE aborted. Model range :$Plot again ? [N]  )CALCLTEX; P    8 ,8 *8 gg<9F ;: !; ! CGS@$; $ CGS@'; ' CGS@*< * CGS@/< / CGS@l: ; ,< 4< ; ; ; $1; U; ; : : d< < < : : < G: : : :  = ; ; ;  ; ; f ; $; (; ,; x: |: 4; : : : : : ; : 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 x: |: x: x: |: 4; : : : L; : ; XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BGH; : 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 x: zQPOP: [^Ь Ь  ,}PQ4P0}PQ<P8ռ~ FOR$WRITE_SLx FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDԼ~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_ENDk1ˈCGSPE˘CGSP ˨CGSP˸CGSPCGSE'8PgELNAMESIЫRSRSP@@UPCASERSkԫ$ԫ0ԫ4ԫ8P<ԫ@,n <ԫDիЫPPW@VP^QRWSVT OTS$MOVE5_R5P5?&HP DLPDPEzE VЫTEPEPXGVXPGVP\ԫ`ԫd,8< ˪UPCASELEN1P1~ FOR$WRITE_SL  FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SLLEN1 =4)_=NBO 4l`X(z :Bf~4pil楨wi2Cx&-| Iɲנe9M_Ȃ8<[ ҬXZV\(nt6x&aA؈ LNWZS:QX.bZ&o ZVNQ}\;PoʒZbৼ"x1SJ@I~Xw=aFƖSd-&s+ 쪅d݋Aba5wus ZD$yH;LȬ+&~jo??˜&CBc[c Sޢ@#䍼O@9"}!e 4>a4}FQ7LZq:=w3;א=EQ9SLfT=7'iAVѭnQuS[a SA/ %IAJDGH;*k:rg6}o̡42|$0sd (*gMQj42!^̀ӄ[0i+,Lpq?JM`WB{ .8,j{x4J̤e{QqjTX?E+uaGFMK5FYtgirI/Qk56~ᮭpY$K[E_C]uk ;7jAFSO+dY0 :1`\3rs%NUS )Nu֒=#Pkrԣ"pC.5M׭ӰڣX̫+C61k]ÃiicvJuh/zCF/{\oȢ@?nw^s``2PyuI:%kù24dy_:NxgT= q+8(ɍTRS/]m.Rl/TO'h['k"d=3Bٟ]|6z>n|Hk6IAn F l2xg=Ui"{9(jeZw-"ާ31Y,ɬr& ®(SS/BXAɃAKa^&TY!Xޓp!Έ }"Fz-o*:l(iA` ]LXk'En'?OB(9/O$P#s|ۜ~}n۶;&!Bq?zN<|+/ܺam,cEԃ{aCqԊ^a2$B:3f4w3poLLMeAbg ~,p>B@AJx>10瑷vFvjÁѣ~QN`koP$|h$y|AIyO! 酓 en 朷HbY XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BMN1PPQPpЫpPP $LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_T_DS FOR$IO_T_V_DS FOR$WRITE_SL FOR$READ_IL FOR$WRITE_IF OTS$POWRJ OTS$POWRR OTS$MOVE5_R5 MTXH$ALOG_R5 MTH$EXP_R4 MTH$SQRT_R3 MTH$SINCOS_R5FPIPP"@P PPw Pm P P' PP|P!!PA9P#HPOPePqP2xPP PPPPPPsPPf PQP*PE*P APMPRP_P yPPy Pv Po Pf PP P ZPdcP[tPCP P(P.P%5P HPYv QP bP-qPPP(P( P PH PPPPP P PPP+P5PFPAMPqXPpPPvPAP!PPP&PPPP PP&P-P5PFPMMPqZPdPkPQPP  P P P' P/ PB PQ P` P'g PWt P Pw P P P L~ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BYZP P9 P P P P P P% P, PB PR Pa Pp Psw PG P P P? P P P P P" P1 P@ PG PwO Pb Pq P Ps P7 P P  P P P  P P P' P1 P = PN P<] P-l P{ P PQ P- P P  P  P$ P? P0 P! P( P0 PD PT P[sf Py PN P P& P P* P? P0P!P P(P=PQP~bPyPVPP*PP+PeP:PPPLPb&P.P7PPPPHTPiP:nPtP/PPzP:P+P6P)DPXPiPCP$P5UP6ZP1PP2P-PGP@SPP@P1PMMA\ ;ww1ږ013CALCSPEC01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133CALCSPEC<P@** NWAVE =** Too many wavelengthsRSUNPCPIPlease enter a spectrum filename, or expression like BB 10000 RN V ABMAG 15.3$CALCSPEC > RN** CALCSPEC CHECKSUM ERRORMAGFLAMFNU** CONSTANT MUST BE POSITIVE(COUNT** WARNING: bad passband renormalization.** band = ** WAVE =** FILT =*0} XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bi\]* SPEC =** want = ** have ** FAILED -> ABMAG** CALCSPEC invalid blackbody temperature** CALCSPEC invalid power-law wavelength** CALCSPEC invalid gausian FWHM** CALCSPEC invalid hydrogen temperature** not found: )** CALCSPEC aborted.** Failed interpreting spectrum script.)CALCSPEC8N P    H J J J K K G F L  ^%N % CGS@*N * CGS@-N - CGS@hN M M 40d }pN pN pN SPECFORM, ˄ۈ8 LIB$INDEXPLSPECFORM, ˄ۈp LIB$INDEXPPի5YD0PS0Ы0P MTH$ALOG10_R5DPRPPYի5Z@PY1~ FOR$WRITE_SL| FOR$IO_T_DSݫ0 FOR$IO_F_V FOR$IO_END1-XF *1ի1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI ˄WORD2ի1kѫ1YYP,PI I(֫YI)PPY,Y@ ˔CALCBANDP1˰ LIB$INDEXPYիZSЪP MTH$ALOG10_R5DPBP@CYYի5ZDSY1-XF 1ի1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI ˼WORD2ի1ѫ1YYP,PI I(֫YI)PPY,Y@ «^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWët޸-ڀzC[D^{veEϜ7Ax;b6erATg9c͜;&4*)0_ 1'T_,2AfiLe3LqcHҲe>Kn( )DkWf68)x)?=sVL/)Z$d&sIgpT^l Ív<vVNy%&$[ mo蒽Pdp2<:iϿze<sԀ#:Q/t3c)Y^`islMLsF (_*RkWr&V:ĉpB t=\ރ?ڐ1ϩޣH FM Zj4LF:oOl.ʼD|R87 ްXls,g q_C#lAi ubd&@efb뒥+' ;b!]D#iъ.[2Q^J>m, [G&Le7iCݚ8 8&tVm t9#4IK 6 sjYw1#ԕrqBDIC Q&h$3 cl,Twq"`St2۾6%u:L[DM KvQe ]\;Ƿ̹ C(h C ;VUj>_J黩B5}Xݼ.` XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B"klPЫY,PI WORD1ի1ѫ1PPY,Y@ «^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY@ FOR$READ_IL߫4 FOR$IO_F_R FOR$IO_ENDCALCBANDP1 LIB$INDEXPRATEPY4SPECFORMPEFFSTIMPYPZիRPTQTbbTTPRZˏPRD;oRЫZQJRSPQRSYp LIB$INDEXPQYC1˄ LIB$INDmEXP1~ FOR$WRITE_SLː FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL˘ FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SLˠ FOR$IO_T_DS˨LEN1P˰˴˰ FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL˸ FOR$IO_T_DS FOR$IO_F_RPRRPPRB FOR$IO_F_RJ FOR$IO_F_Rݫ FOR$IO_L_V FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_F_RB FOR$IO_F_RJ FOR$IO_F_R FnOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS5 FOR$IO_F_RB5 FOR$IO_F_RJ5 FOR$IO_F_R FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSLEN1P FOR$IO_T_DS FOR$IO_T_DSݫ4 FOR$IO_F_V FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSLEN1P FOR$IO_T_DS FOR$IO_T_DSY FOR$IO_F_V FOR$IO_END LIB$INDEXPCY4PZի5R@PZ1¹- XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bno oġSYGY4PRի5ZDPR~ FOR$WRITE_SL$ FOR$IO_T_DS,LEN1P484 FOR$IO_T_DS< FOR$IO_T_DSY FOR$IO_F_VD FOR$IO_T_DSݫ4 FOR$IO_F_V FOR$IO_ENDT LIB$INDEXP`SPECFORM1-XF C1-XF I1-XF P1-XF pW1-XF -XF -XF \-XF ^-XF a-XF g-XF l-XF F-XF >1,XF ˄ۈ«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI |WORD1ի1ѫ1PPYYˌ@ːˌ FOR$READ_IL߫4 FOR$IO_F_R FOR$IO_ENDPի5YЫ4Pԫ1-XF s1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PIq ˔WORD1ի1ѫ1PPYYˤ@˨ˤ FOR$READ_IL߫8 FOR$IO_F_R FOR$IO_ENDS8~ FOR$WRITE_SLˬ FOR$IO_T_DSݫ8 FOR$IO_F_V FOR$IO_ENDYի5Z˸˴BNUEPY,\ ˄ۈԫ1-XF u1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY@ FOR$READ_IL߫< FOR$IO_F_R FOR$IO_END«^(nԴ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BqrY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY@ FOR$READ_IL߫@ FOR$IO_F_R FOR$IO_ENDS<~ FOR$WRITE_SL FOR$IO_T_DSݫ< FOR$IO_F_V FOR$IO_ENDP<Yի5Zݫ@G<~ OTS$POWRRPY,\ ˄ۈԫ1-XF G1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY@ s FOR$READ_IL߫D FOR$IO_F_R FOR$IO_END«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY @$  FOR$READ_IL߫H FOR$IO_F_R FOR$IO_ENDSH~ FOR$WRITE_SL( FOR$IO_T_DSݫH FOR$IO_F_V FOR$IO_END1PP MTH$ALOG_R5@PP MTH$SQRT_R3ˏHYFPYZի5UCDPFYPDPPRPP MTH$EXP_R4PZ,\ ˄ۈԫ1-XF w1«^(nЫtY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI 0WORD1ի1ѫ1PPYY@@D@ FOR$READ_IL߫8 FOR$IO_F_R FOR$IO_END«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI HWORD1ի1ѫ1PPYYX@\X FOR$READ_IL߫L FOR$IO_F_R FOR$IO_ENDS8~ FOR$WRITE_SL` FOR$IO_T_DSݫ8 FOR$IO_F_V FOR$IO_ENDYի5ZlhHYDNUEPk{ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B*tuY,\ ˄ۈԫ1-XF yxCALCLTEի1ԫ1-XF |1«^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI ˔*WORD1ի1ѫ1PPY,Y@ «^(nЫY ~YW^(WnWZZY,Yn PQ^WPPWëPЫY,PI WORD1ի1ѫ1PPYY˴@˸˴ FOR$READ_IL߫P FOR$IO_F_R FOR$IO_ENDJPPPЭPPTԭ˼LEN1P^(Pn^SY@~YYY^vLOADLIST^(իT~ FOR$WRITE_SL FOR$IO_T_DSLEN1P FOR$IO_T_DS FOR$IO_T_DSݫP FOR$IO_F_V FOR$IO_T_DS FOR$IO_END1EVALSPECPZZPPZ¹ ZXԭLEN1P^(Pn^SY@~YY$Y^(,LOADLISTw^(ѫXT1<EVALSPECNTPCPPPëTXYNYYGYP Q իЫPP5YZЭPZQYR OTS$MOVE3_R5, ˄ۈ1S 1\ LIB$INDEXPhSPECFORMˌ LIB$INDEXP˘SPECFORM, ˄ۈ˼SPECFORMSPECFORM,F ˄ۈC PYի5ZEPjUE RARUYԫ1~ FOR$WRITE_SL$ FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL<ˌYY^(Yېn ^( n YY,^0, FOR$IO_T_V_DS FOR$IO_END~ FOR$WRIT` XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BvwxE_SLW^(WnWY ^( n YY4^84 FOR$IO_T_V_DS FOR$IO_END~ FOR$WRITE_SL^(n ^( n <^@< FOR$IO_T_V_DS FOR$IO_ENDXFEVALSPECԫ«^(nЫV ~VW^(WnWXXV,Vn PQ^WPPWëPЫV,PF 1<~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END1PEBMVAVAIRMASSSTMAGQ)VEGAMAGQOBMAGQCOUNTSQMJYQJYQ\NUFNUQLAMFLAMQPHOTLAMQPHOTNUQ*BBPLHyILTEGRID** SCRIPT=** DONE =** TODO = OCALCSPECABSORPEXTMAGATMOSATMOSCCALCBANDCGS MTH$ALOG10WORD1UPCASE LIB$INDEX MERGEWAVESPECFORMVSHIFTEXTSPECWORD2RATEEFFSTIMLEN1BNUMTH$ALOGMTH$SQRTMTH$EXPHYDNUCALCLTELOADLISTEVALSPECq$CODE$PDATA V $LOCAL FOR$IO_END FOR$IO_L_R FOR$IO_L_V FOR$IO_F_R FOR$IO_F_V FOR$IO_T_DSz FOR$IO_T_V_DS FOR$READ_SF FOR$WRITE_SF FOR$WRITE_SL FOR$READ_IL OTS$POWRR OTS$MOVE3_R5 MTH$ALOG_R5 MTH$ALOG10_R5 MTH$EXP_R4 MTH$SQRT_R3CP,kPyP6PPaP&hPPPAAP2HP&pPP PPP&P P1<PDP NP0[PiPPP P!PP+PPPb/P :P9?P%rP }P~PPdP 7P XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bazz{P PLP`PhPP1P'P#P P4P<PP]PSPOP PPPuPPP{P P4PPFPPPTPPNPP%PPP P- P+ P1 P[ Pm P9u P P$ P P P: PH P?P P3[ Pq P  P P PV Pv P>% P/ PO P|_ P P& P\ Pf Pj P P P P P& P:* P63 P-7 P D PO P_ PkP xPPP PPg!P ,P @PRPdPvPP{PlP]PNP?P0P!PPrP |P P~ PP* PIP SP WP P&P%P PmPwP{PPP!PZP*P}"P:P6P@PDPP"PP#P,KPuP*PIP)P3P7PP/P%P!P&DP#zPPPdP[P.P#PP_PUPQ@P_P` P0P;5P'jPrPP PDPP PPPrOC qww1ږ01] XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B}~.CGS01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133  CGS CGSBPPH[}PQPkDCGSvPPI HCGSDCGS $CODE$PDATA$LOCAL  ww1 ږ014 CHECKBAND01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKBANDRPobsmodes: ...**** CALCBAND error code =** CHECKBAND failed to verify  CHECKBANDP  `  @H @ -@PO[ ^ЫV}PQ$P ޫ PFOR$INI_DES1_R2Լ ~ FOR$WRITE_SLP FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDռVмXռ10Y< XZX X~ FOR$WRITE_SLX FOR$IO_L_VX FOR$IO_T_DS `JidhLEN1PpJitp FOR$IO_T_DS FOR$IO_ENDX ~ FOR$WRITE_SLx FOR$IO_T_DS FOR$IO_END ˀJi˄ˈ SPLITMODEWի1PF ˜CALCBANDP V1ּ ~ FOR$WRITE_SL˰ FOR$IO_T_DSX FOR$IO_L_V˸ FOR$IO_T_DS JiLEN1PJi FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSVL%o XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BX  FOR$IO_L_V FOR$IO_END~ FOR$WRITE_SLj FOR$IO_T_DSLEN1P FOR$IO_T_DS FOR$IO_END(WXiV O CHECKBANDCALCBANDLEN1 SPLITMODE$CODEK$PDATA$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SLFOR$INI_DES1_R2ARPfP}PPLP!PP2P;/ ww1 ږ014 CHECKFILT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKFILTP** No passband data.** Wavelength is negative.** Wavelengths not monotonic increasing.** WARNING throughput at** CHECKFILT aborted. CHECKFILTP    (.VknPH[ЬЬ  (ռ~ FOR$WRITE_SL, FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1мRSռ1޻T޻(UP@VSPQQPPQQWS~ FOR$WRITE_SL4 FOR$IO_T_DSߦ FOR$IO_F_R FOR$IO_ENDQG~ FOR$WRITE_SL< FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SLS FOR$IO_L_Vߦ FOR$IO_F_RW FOR$IO_L_VG FOR$IO_F_R FOR$IO_ENDԼ~ FOR$WRITE_SLT FOR$IO_T_DS FOR$IO_ENDSCe~ FOR$WRITE_SLD FOR$IO_T_DSCe FOR$IO_F_RL FOR$IO_T_DSߦ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BŐ FOR$IO_F_R FOR$IO_ENDRS H CHECKFILTm$CODE$PDATA\$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_T_DS FOR$WRITE_SL8#P(JPYPP*P^Pt,P93'  #mww1 ږ014 CHECKFORM01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKFORMePUnrecognized spectrum FORM : Recognized spectrum FORMs are: pixel= angstrom= datum=##) CHECKFORMP     ( (D$\$$< BL,,$$QPHOTLAM 'QFNU erg/cm^2/s/Hz 'FLAM erg/cm^2/s/Angstrom  'PHOTNU photon/cm^2/s/Hz 'PHOTLAM photon/cm^2/s/Angstrom  'NUFNU erg/cm^2/s 'LAMFLAM erg/cm^2/s 'ABMAG -2.5 log(FNU ) - 48.60  'STMAG -2.5 log(FLAM) - 21.10  'JY 10^-23 erg/cm^2/s/Hz  'VEGAMAG -2.5 log( source/Vega )  'MJY 10^-26 erg/cm^2/s/Hz  'COUNTS detected count/cm^2/s/dlambda 'PO[Ь Ь ( 4}PQ2-ww1ږ014 CHECKPHOT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133CGͨ)մ ˪7'bAKX:ܫ+$ IڲZg-17Ou7&EWIȫdv&im:jh/HIoş]3)鶨ldZOM/=uo0fE6؄TI,@ @:$4w=\"z)G\54X7O E#k+5X# P-(>o$rFFbKwBMc^e{*jWN̈;3eҮS+ocin7e7VYޙ.N؝qi`K-&/l48v2혚PhVkהm<.\w 䩊["d:w ĸJ( k )"uǫqpeĩCet$S*'ڏgքUL{ "eݻa /(#]„y/«U A1n` |<󚢔n+#VҎ$ L`Jeܵ3ާHEK~m^ r%Q:V=-)1rVѧ9%&Uzkb1CjGC_j nO K_[\.9]dQ>̃*Q+B Ji$U`dpND^VL7i7g؏5(GFs$_C!!6MЎGޛ#uNA}UklbD[ kN#?F, \\eDX zvG?J23J& qO7G+22(W{/¢g4Y=mIs QJ)t²cE8Sʟ!}u|1n\|r)7G(j"iLt~*5qzR4Me (4)ɑ=~s+\~@F>I5f A2tRf@6ӪN<fAֵ z:'MY~Ka qgϵ*j%#BZtڎF>> o.plfO%YsG({. thˎ;Cz"M P{陭1dv̡Czrf5? q=}ffbI.J:o.x,15̦Ӄ+p\1p@zs XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B:PLOTSPEC"n[  HORNE PLOTRATIO!A  HORNE LOAD_DAT"   HORNE AMOEBAFIT"`v  HORNE PLOTRATIO!`  HORNE PLOTSPEC"G  HORNE AMOEBAFIT @B#  HORNE PLOTFIT @ $  HORNE PLOTFITz QO HORNE PTRANSs]O HORNE PTRANSO HORNE PTRANSR1G 013PLOTSPEC01 6-Aug-1993 19:25 6-Aug-1993 19:257VAX FORTRAN V5.7-133PLOTSPECP@@ffAuto-scaling PIVLAMFWHMLAMCOUNT EBMV MAG** no vertical range in plot data.TE(B-V) =$Plot again ? [N] ** PLOTSPEC aborted.))))PLOTSPECe P   d dd[ ]$CODE0$PDATAl$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SLFOR$INI_DES1_R28LP]PPP=P6P1 P50$  ]ww1ږ014 CHECKSPEC01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKSPEC7Pspectra: ...** CHECKSPEC failed to verify  CHECKSPECPѓ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B T  D|PI [}PQPޫPFOR$INI_DES1_R2Լ ~ FOR$WRITE_SL@ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDռмRSռ1(T<USUWHGdLPLEN1PXS S~ FOR$WRITE_SLS FOR$IO_L_VX FOR$IO_T_DSX`Gdd` FOR$IO_T_DS FOR$IO_ENDS ~ FOR$WRITE_SLh FOR$IO_T_DS FOR$IO_ENDPFpGdtxCALCSPECիּ ~ FOR$WRITE_SLː FOR$IO_T_DSX˘Gd˜˘ FOR$IO_T_DS FOR$IO_ENDRS" I CHECKSPECLEN1CALCSPECG$CODE0$PDATA$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SLFOR$INI_DES1_R28KP]PPP<P#P P51% Gww1ږ015 CHECKSPHOT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKSPHOT?Pspectro-photometry: ...** CHECKSPHOT failed to verify  CHECKSPHOTP TD|PI [}PQPޫPFOR$INI_DES1_R2Լ ~ FOR$WRITE_SL@ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDռмě XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BKRSռ1(T<USUWHGdLPLEN1PXS S~ FOR$WRITE_SLS FOR$IO_L_VX FOR$IO_T_DSX`Gdd` FOR$IO_T_DS FOR$IO_ENDS ~ FOR$WRITE_SLS FOR$IO_L_Vh FOR$IO_T_DS~ FOR$IO_L_V FOR$IO_ENDPFpGdtxCALCSPECիּ ~ FOR$WRITE_SLː FOR$IO_T_DSX˘Gd˜˘ FOR$IO_T_DS FOR$IO_ENDRS  I CHECKSPHOTLEN1CALCSPEC\$CODE8$PDATA$ LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SLFOR$INI_DES1_R28KP]PPP<P8P0P51% \ww1@.ږ014 CHECKWAVE01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 CHECKWAVEPLOG** Bad values: of** Unrecognized units Recognized units are:(and LOG of the above (e.g. LOG).$What units are these ? ) CHECKWAVEP  444P, 4,,,A`b<,,,QLAM  'ANGSTROM 'NM  'MICRON  'MM  'CM  'METER  'NU  'HZ  'KHZ  'MHZ  'EVq XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B6  'KEV  'MEV  'GEV  'TEV  'PO[Ь } PQ P, 4UPCASEH LIB$INDEXQPQQWWPPQ,Q@ RռWмPQPSSRPQR~ FOR$WRITE_SLT FOR$IO_T_DS\LEN1Pd hd FOR$IO_T_DSl FOR$IO_T_DSR FOR$IO_L_Vt FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDXXYIˀ˄WORD1kTTUU˔TYP@˘˜ LIB$INDEXPZZPRRPPRRVF"ZF F'ZTYZ,UJ (IW^(In^(n(n^XR˨LEN1P~ FOR$WRITE_SL˰ FOR$IO_T_DS˸LEN1P  FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL($ FOR$IO_X_NL FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSLEN1P FOR$IO_T_DS FOR$IO_T_DS FOR$IO_ENDռ1~ FOR$WRITE_SLPXXPPXWX޻ZWPмYYPPYPPYYP@j FOR$IO_F_RXW FOR$IO_ENDz~ FOR$WRITE_SF FOR$IO_T_DS FOR$IO_ENDz~ FOR$READ_SF FOR$IO_T_DS FOR$IO_END1z~ FOR$WRITE_SF] ~LEN1P^(Pn^SXXW^(|nWW^  FOR$IO_T_V_DS FOR$IO_ENDz~ FOR$READ_SF FOR$IO_T_DS FOR$IO_ENDLEN1P,  UPCASE1y|P$What units do you want ? [ O CHECKWAVEUPCASE LIB$INDEX XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BrLEN1WORD1$CODE$PDATAD$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_T_DS FOR$IO_T_V_DS FOR$IO_X_NL FOR$READ_SF FOR$WRITE_SF FOR$WRITE_SLFP]P$`P!kP{PP]$Pk>PCPJPQP>VPoPP;jPP0PP OC&ww1 ږ01.CPU01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133  CPU P CPU PQPH[k LIB$INIT_TIMERkLIB$STAT_TIMERNPGCP$LIB$INIT_TIMERf HCPULIB$INIT_TIMERLIB$STAT_TIMER4$CODE$PDATA,$LOCAL P 4ww1rږ01/DCGS01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DCGS P) DCGSXPPH[}PQPk-k pP MTH$DATAN_R7eP1-k C}Q\1-k G}44MQ1-k H}>j\p1-k K}&,~Z1-k }m9of/1-k  }XA-1-k  }vje1-k  }z{<~1-k }4zy8.1-k }.oJ;1-k }, }@1-k E}IA XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BE111-k }wk!$PDATA$LOCAL FOR$IO_END FOR$IO_D_R FOR$IO_T_V_DS FOR$READ_SL FOR$WRITE_SF MTH$DATAN_R7< P0Pi=PKPNYPgP2uPPPPPPPPPPPP P.Pk<PJPOXPfP3qPPPPPPPPPPPPP*PpMA  ww1 ږ016 DUMPCMP_DAT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPCMP_DATxP** ERROR WRITING TO COMPONENTS LIST FILE:** ERROR OPENING COMPONENTS LIST FILE:** DUMPCMP_DAT aborted.  ')' DUMPCMP_DAT<P 0 0)H7 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B&)OPO[^}PQP} PQ PЬ(4}PQDP@ޫ@PFOR$INI_DES1_R2ռ1`FOR$OPENP1ˀWORD1мVWռ1<@WZ@ːJP˔˘WORD1f0 FOR$WRITE_SFG4 FOR$IO_L_Rݏ.dat PPP QQZR2  -  1ww1 ږ016 DUMPCMP_TAB01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPCMP_TABP  ** Invalid NCMP=** UTTINN aborted. IFAIL=** UTCDEF aborted. IFAIL=** UTPPTI aborted. IFAIL=** UTTCRE aborted. IFAIL= DESCRIP=''DESCRIP** UTHADT failed to write DESCRIP record: DBTABLE='CRCOMPLIST'DBTABLECRCOMPLIST** UTHADT failed to write DBTABLE record:INSTRUME='INSTRUME** UTHADT failed to write INSTٯ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BC\RUME record: COMMENT='COMMENT** UTHADT failed to write COMMENT record: HISTORY='HISTORY** UTHADT failed to write HISTORY record:** UTRPTT failed to write COMPNAME in row** UTRPTT failed to write FILENAME in row idno=** UTRPTT failed to write COMMENT in row** UTTCLO aborted. IFAIL=** DUMPCMP_TAB aborted.) DUMPCMP_TAB(P o w  6$*ZS(D(, F  _y0  UTHADT@)  UTHADT@ UTHADT@)0  *T* UTHADT@\*3t| ]gg UTHADT@)ot|  UTHADT@) )0T Y XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B$)%(+SSmQ,COMPNAME 'FILENAME 'COMMENT '   '   '   'A18 'A40 'A68 'QPM[ ^}PQ,P(} PQ4P0Ь<H}PQXPTޫTPFOR$INI_DES1_R2ռ~ FOR$WRITE_SL FOR$IO_T_DSk FOR$IO_L_V FOR$IO_END1 PROLOG_IRAF޼UTTINNռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼<UTCDEFռ~ FOR$WRITE_SL@ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼XHUTPPTI ޼l\UTPPTI޼ˀpUTPPTI޼˔˄UTPPTIռ~ FOR$WRITE_SL˘ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˨ˠUTTCREռ~ FOR$WRITE_SLˬ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1˴WORD1PPQߓA+1K-Gę.K ٍ ZD2L Ũ &yHSC8O͏e(X In2q#9G#}b B^.ori\-|Sv`0l{~uݳaӳq 0@_7S6Y4ŀP xm܋3$,^]!Ԁ4.ф\:~pBMrRn6$'wrװov7 ]pZAe1@BӵT2RRY3. Ș9iҘgRbūCs1iH]\(/SezM8Y܇ՠ_S!R6,]-' yՖ>=Ʀ't: 9ᨲ}KtP"OD |z 4Ym\\d/L{Ÿedw5?1?@#P߶@P|eO|Ħ!ca9 )j @S=WW}gBgq(R@!]Iw8(DE]>ksi!nD@hcMUF^c[Bz>5$2rc)GU3S a0}+_Æ?&CFB(vEe(ͻVHB!' lw-EY/yg@vduˊ8bD© %408p-w%Lj W\ ;>Q%d( .V9Boy6a~;f~Z?Yb2ʷ;s/a5Ƞ+ GG!RֶV[ޗH%>%<%̵荲BÄj~VP(O\G_Bm4$.e2?I:Ѕ }jup~-aePm6}6Dߘ M"-lam/'\ueA%jDni9рy7H9D2F bD8zC,ƅ#:͜ )P-XЖrXsj{>O?TfF! MmX ><@]V7>z6p22vɔ%t}R+ =1‑+x-4{'D;^OA%*LƵg3J/0A^0+s7g"yl41epTP@[`4|%:XG9w[c`> ߮hR0(s;-MlݦD%k$]=k XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B1O_T_DS FOR$IO_ENDԼPComponents inventory for KDH - developed by Keith Horne. KDH - Built by DUMPCMP_TAB.P M DUMPCMP_TAB PROLOG_IRAFUTTINNUTCDEFUTPPTIUTTCREWORD1UTHADT FOR$TIME_T_DS FOR$DATE_T_DSUTRPTTUTTCLO$CODE$PDATA$LOCAL FOR$IO_END FOR$IO_L_R FOR$IO_L_V FOR$IO_T_DS FOR$WRITE_SL FOR$WRITE_IFFOR$INI_DES1_R2IP*pP0P)PP,P@P+hP8P,P+P IP{P P P*PP PVKP iP{PP+P+P(PyPPe4P&\PE{PH  ww1ږ017 DUMPFILT_DAT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPFILT_DATP** Invalid NWAVE=** Invalid NCOL= File=NWAVE= WAVES=** DUMPFILT_DAT aborted.** Error opening file :** Error writing to file :** Error closing file : DUMPFILT_DATP      !'-4Lc}PH[}8 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BPPQPЬ(Ь0<ЬDPռ~ FOR$WRITE_SLT FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1ռ Ѽ ~ FOR$WRITE_SL\ FOR$IO_T_DSݼ  FOR$IO_L_V FOR$IO_END1/kdFOR$OPENkRP1R FOR$WRITE_SLˈ FOR$IO_T_DS FOR$IO_T_DS FOR$IO_END޻(SR FOR$WRITE_SLː FOR$IO_T_DSݼ FOR$IO_L_V˘ FOR$IO_T_DSߣ FOR$IO_F_RмP@c FOR$IO_F_R FOR$IO_END޻P-PuP8P/P#P1y$ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B P<8P:POcP&PD R& Oww1}ږ017 DUMPFILT_TAB01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPFILT_TABVP  ** Invalid NWAVE=** Invalid NCOL=** UTTINN aborted. IFAIL=** UTCDEF aborted. IFAIL=** UTPPTI aborted. IFAIL=** UTTCRE aborted. IFAIL=DESCRIP =''DESCRIP** UTHADT failed to set DESCRIP. IFAIL=DBTABLE ='CRTHROUGHPUT'DBTABLECRTHROUGHPUT** UTHADT failed to set DBTABLE. IFAIL=.COMPNAME='COMPNAME** UTHADT failed to set COMPNAME. IFAIL=INSTRUME='INSTRUME** UTHADT failed to set INSTRUMENT. IFAIL=.TBH.DATHISTORYAUTHORCONTINFOLAMBDAREMARKTITLEUPDATE HISTORY='** UTHADT failed to transfer HISTORY record.COMMENT COMMENT='** UTHADT failed to transfer a COMMENT record.** FAILED TO OPEN SOURCE FILE ** FOR COMMENT/HISTORY RECORDS.** UTHADT failed to write HISTORY record:** UTHADT failed to write COMMENT record:** UTCPTR failed to write column ** UTTCLO aborted. IFAIL=** DUMPFILT_TAB aborted.) DUMPFILT_TABP      Do   6$*ZS 1A@` /3 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bn[ u  UTHADT@'  UTHADT@ UTHADT@'7 9CDC UTHADT@L(L t~~ UTHADT@*(0(D(X(l((((((  UTHADT@(,%(4(H(\ -%% UTHADT@(.7e08  U>a XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B:THADT@() 8 UTHADT@()08 -%|% UTHADT@()!!!/QWAVELENGTHTHROUGHPUTERROR 'ANGSTROMS 'TRANSMISSIONTRANSMISSIONF10.1 'G12.5 'G12.5 'QPK[}PQP} PQP}PQ$P Ь,8Ь @ LЬ$T$`Ы Vռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1Ѽ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END޼޼޼ CHECKFILTռ1޼޼޼$ CHECKFILTռ1 PROLOG_IRAF޼ UTTINNռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼<޼D$UTCDEFռ~ FOR$WRITE_SLH FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼`PUTPPTI޼p޼tdUTPPTI޼ˈxUTPPTI޼˜ˌUTPPTIռ~ FOR$WRITE_SLˠ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˰˨UTTCREռ~ FOR$WRITE_SL˴ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1˼WORD1~ FOR$WRITE_SL FOR$IO_T_DSRRSSB$3V> XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BW FOR$IO_T_DS FOR$IO_T_DS FOR$IO_ENDSB$޼UTHADTռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END޼8(UTHADTռ~ FOR$WRITE_SL< FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1DWORD1\ LIB$INDEXPPЫRRPPRR~ FOR$WRITE_SLh FOR$IO_T_DSRRSSpB$tp FOR$IO_T_DSx FOR$IO_T_DS FOR$IO_ENDSˈB$ˌ޼ˠːUTHADTռ~ FOR$WRITE_SLˤ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1~ FOR$WRITE_SLˬ FOR$IO_T_DS FOR$IO_T_DS˴ FOR$IO_T_DS FOR$IO_END޼UTHADTռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1 LIB$INDEXP LIB$INDEXP1WORD1  LIB$INDEXPR4 LIB$INDEXRRPPRPWWXX@GDHFOR$OPENP1VYG FOR$READ_SFd FOR$IO_T_DS FOR$IO_END LIB$INDEXP LIB$INDEXP LIB$INDEXP LIB$INDEXP˰ LIB$INDEXP˜ LIB$INDEXPt LIB$INDEXPˈ LIB$INDEXP1 LIB$INDEXPDR,R@ D( LIB$INDEXP,P D~ FOR$WRITE_SL4 FOR$IO_T_DSd FOR$IO_T_DS< FOR$IO_T_DS FOR$IO_END޼\LUTHADTYռ` FOR$CLOSE~ FOR$WRITE_SLh FOR$IO_T_DS FOR$IO_ENI XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BID11x LIB$INDEXP1ˌ LIB$INDEXPDR,R@ Dˠ LIB$INDEXP,P D~ FOR$WRITE_SLˬ FOR$IO_T_DSd FOR$IO_T_DS˴ FOR$IO_T_DS FOR$IO_ENDV޼UTHADTռ~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END FOR$CLOSE11 FOR$CLOSE~ FOR$WRITE_SL FOR$IO_T_DSXG FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END FOR$CLOSE1 FOR$TIME_T_DS FOR$DATE_T_DS WORD1!^(!In}~ ~ ^( n,3n DQ^~ FOR$WRITE_SL0 FOR$IO_T_DSd FOR$IO_T_DS8 FOR$IO_T_DS FOR$IO_END޼XHUTHADTռ~ FOR$WRITE_SL\ FOR$IO_T_DS FOR$IO_END1PPW$P+LP\PkPPP PPPP^ PQPD&P73P*@PMP\PP*PPPP(PgP]P cǾ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B P"PVTPrPyPP  P7 P8l P P8 PV Pp. P&V PEk P( P3'  ww1@ږ016 DUMPGRF_DAT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPGRF_DATP** DUPLICATE COMPONENT '' ''' 'dark'' 'clear'** GRAPH USES COMPONENT NOT IN LIST.** ERROR WRITING TO GRAPH FILE:** ERROR OPENING GRAPH FILE:** DUMPGRF_DAT aborted. DUMPGRF_DATP    0   $- D0Q0pPO[ ^}PQPЬ ,Ь4@ЬHTЬ$˄$ː}PQdP`ޫ`PFOR$INI_DES1_R2}(PQˠP˜˜PFOR$INI_DES1_R2ռ 1ռ 1˼FOR$OPENP1м Sռ 1<`Zм YXY1ېUP@ېTCTZXZ~ FOR$WRITE_SL FOR$IO_T_DSߤ FOR$IO_L_R<˜VXVP۬R˜@b FOR$IO_T_DSZV˜Fb FOR$IO_T_DS FOR$IO_ENDYXSTpU`DeWORD1Ġt XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B%6޻TX޻@Y޻,RZ1<˜PPZ۬V˜ JfWORD10 FOR$WRITE_SFCb FOR$IO_L_RCi FOR$IO_L_RCh FOR$IO_L_R$ FOR$IO_T_DSPPPQP,QTWGe0, FOR$IO_T_DS4 FOR$IO_T_DS PPP QP<QZWGf@< FOR$IO_T_DSD FOR$IO_T_DS FOR$IO_END1Ch0 FOR$WRITE_SFCb FOR$IO_L_RCi FOR$IO_L_RCh FOR$IO_L_RL FOR$IO_T_DSPPPQPTQTVFeXT FOR$IO_T_DS\ FOR$IO_T_DS FOR$IO_END1Ch0 FOR$WRITE_SFCb FOR$IO_L_RCi FOR$IO_L_RCh FOR$IO_L_Rd FOR$IO_T_DSPPPQPlQTVFepl FOR$IO_T_DSt FOR$IO_T_DS FOR$IO_END1~ FOR$WRITE_SL| FOR$IO_T_DSCh FOR$IO_L_R˄ FOR$IO_T_DS FOR$IO_END0 FOR$WRITE_SFCb FOR$IO_L_RCi FOR$IO_L_RCh FOR$IO_L_Rˌ FOR$IO_T_DSPPPXP˔XTYIe˘˔ FOR$IO_T_DS˜ FOR$IO_T_DS FOR$IO_ENDS~ FOR$WRITE_SLˬ FOR$IO_T_DS FOR$IO_T_DS FOR$IO_END˴ FOR$CLOSEˤ FOR$CLOSEԼ~ FOR$WRITE_SL˼ FOR$IO_T_DS FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END O DUMPGRF_DAT FOR$OPENWORD1 FOR$CLOSE$CODE$PDATA$LOCAL FOR$IO_END FOR$IO_L_R FOR$IO_T_DS FOR$ m1m%ҲR*3uf|jTB4E:Kaۈ- FL*&Z73h’0"v#kX,fA-10S4oJ#H͜X?XO^gma%9o8SEy V!T%z^L -qc]1t~Ҧ+qTBTJo&-iGAђO 0!d@QVuag.V7U9'}t4 \ݸ +9Ҁ$a\H)࣊' Aj%)Pdڼ%=rC ٷ^kDSmɪ &nA<_e(c h]qsN`@fs쟈B͋qpz&-yHv2t?2yk9m_c6kpLMMCkچ%;+ d`zށRRZp׊MsUb TF\d@slI0ImCih ʦ(e<`/ÎrzO9LMJzMBAXTÌ jmYJfg~H`l/?(EMbIVuQjS)镻XE']ZeþxRAî?޸3$3MC+5vPqsG G[ t~ Yu'qm滕g|"Azvu`E-6@!^JMaYfky-N_-iGIJB,wjpnG*D5]GH=$PR[[YLmMTE({OЌ:",EC*۸JuDJ170`VUb,#N<{V;v{Xnq#c+1nw.np .^6U ĒΡk9Kl Q5uI:,)=@| JJf P}['w4 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B/ WRITE_SF FOR$WRITE_SLFOR$INI_DES1_R2{PPPPPPpPPgvPPaGPPP{SPP)PzP*JPPP70P9]Q  Rww1`9ږ016 DUMPGRF_TAB01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPGRF_TAB8P  ** Invalid NCMP=** Invalid NLINK=** UTTINN aborted. IFAIL=** UTCDEF aborted. IFAIL=** UTPPTI aborted. IFAIL=** UTTCRE aborted. IFAIL= DESCRIP=''DESCRIP** UTHADT failed to write DESCRIP parameter. DBTABLE='CRGRAPH'DBTABLECRGRAPH** UTHADT failed to write DBTABLE parameter.INSTRUME='INSTRUME** UTHADT failed to write INSTRUME parameter. COMMENT='COMMENT** UTHADT failed to write COMMENT record. HISTORY='HISTORY** UTHADT failed to write HISTORY record.** DUPLICATE COMPONENTdarkclear** GRAPH USES COMPONENT NOT IN LIST.** UTRPTT failed to write COMPNAME in row** UTRPTT failed to write KEYWORD in row** UTRPTI failed to write INNODE in row** UTRPTI failed to write OUTNODE in row idno=** UTRPTT failed to write COMMENT in row** UTTCLO aborted. IFAIL=** DUMPGRF_TAB aborted.) DUMPGRF_TABLP    u@ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B  (2 Z2P <D,L0=0T44V0080 0o0T<@ 0\ UTHADT@t,0 UTHADT@ UTHADT@,T<@ .808 UTHADT@-A nx0(x UTHADT@t) 0l UTHADT@t)<@0D 0D UTRPTT@0D UTRPTT@ ))0D<(R0D'z0 D(0Dt(00QCOMPNAME 'ֶa XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B\KEYWORD 'INNODE 'OUTNODE 'COMMENT 'A18 'A12 'I10 'I10 'A68 '   '   '   '   '   'QLPO0[^}PQ P} PQ(P$Ь0<ЬDPЬXdЬ(˔(ˠ} PQtPpޫpPFOR$INI_DES1_R2},PQ˰PˬˬPFOR$INI_DES1_R2ռ$~ FOR$WRITE_SLL FOR$IO_T_DSݼ$ FOR$IO_L_V FOR$IO_END1ռ~ FOR$WRITE_SLT FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1 PROLOG_IRAF޼h\UTTINNռ~ FOR$WRITE_SLl FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˔tUTCDEFռ~ FOR$WRITE_SL˘ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˰ˠUTPPTI޼˴UTPPTI޼UTPPTI޼UTPPTIռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼UTTCREռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1 WORD1 PPQP-PuP8!P/-P#2P1_PPPP{P>QE R> OHww1 ږ017 DUMPSPEC_TAB01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPSPEC_TABOP  ** Invalid NWAVE=** Invalid NCOL=** WARNING: no data for STATER XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B_#R** WARNING: no data for SYSERR** WARNING: no data for FWHM** WARNING: CRSPECTRUM needs STMAG, not ** UTTINN aborted. IFAIL=** UTCDEF aborted. IFAIL=** UTPPTI aborted. IFAIL=** UTTCRE aborted. IFAIL=DBTABLE ='CRSPECTRUM'DBTABLECRSPECTRUM** UTHADT failed to set DBTABLE. IFAIL=TARGETID=''TARGETID** UTHADT failed to set COMPNAME. IFAIL=DESCRIP (short description of the data for CRLOG) DESCRIP='DESCRIP** UTHADT failed to set DESCRIP. IFAIL=COMMENT (lengthy description of the data) COMMENT='COMMENT** UTHADT failed to write COMMENT record:HISTORY (concise but full pedigree of the data) HISTORY='HISTORY** UTHADT failed to write HISTORY record:** UTCPTR failed to write column ** UTTCLO aborted. IFAIL=** DUMPSPEC_TAB aborted.) DUMPSPEC_TABpP          DDA I (2 Z<N# 1A`~( fpXX ,LX XXXX*? GXp? UTHADT@xG UTHADT@'Rx\` yJ) XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BX UTHADT@(1p\` X0 UTHADT@8') HRXR UTHADT@)Z/ X UTHADT@)X!X!X!XTX !X TX!XTXX(QWAVELENGTHFLUX 'STATERROR 'SYSERROR 'FWHM 'ANGSTROMS '   '   '   'ANGSTROMS 'F10.2 'G12.5 'G12.5 'G12.5 'F10.2 'Q[POT[}PQ P} PQ(P$}PQ0P,Ь8DЬ L XЬ$`$lЬ(t(ˀЬ,ˈ,˔ЫVռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1Ѽ~ FOR$WRITE_SL  FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_ENDѼ~ FOR$WRITE_SL( FOR$IO_T_DS XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B>c FOR$IO_ENDѼ~ FOR$WRITE_SL0 FOR$IO_T_DS FOR$IO_ENDѼ~ FOR$WRITE_SL8 FOR$IO_T_DS FOR$IO_END-,0 B~ FOR$WRITE_SL@ FOR$IO_T_DS, FOR$IO_T_DS FOR$IO_END,,0 ޼T޼X޼ \P CHECKFORMW WP( @W PROLOG_IRAF޼pdUTTINNռ~ FOR$WRITE_SLt FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˜|UTCDEFռ~ FOR$WRITE_SLˠ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼˸˨UTPPTI޼޼˼UTPPTI޼UTPPTI޼UTPPTIռ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޼UTTCREռ~ FOR$WRITE_SL  FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END޼<,UTHADTռ~ FOR$WRITE_SL@ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1VHWORD1ЫV~ FOR$WRITE_SLX FOR$IO_T_DSVWW RR`G(d` FOR$IO_T_DSh FOR$IO_T_DS FOR$IO_ENDRxG |޼ːˀUTHADTռ~ FOR$WRITE_SL˔ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1~ FOR$WRITE_SL˜ FOR$IO_T_DS FOR$IO_ENDVˤWORD1@~ FOR$WRITE_SF^(GnXX Y΁~CkUV(M(Is8хg );W[N4`inD*%Sw\ c5/(VWp>uKЮk #ɭjᖁJe٫\Y 2 E@b ArWuYka;*k#p7B-tm\\}$NĘb%hME tB8= ǚ-Jw6?+1L? rİvNv.1VwAh-MHv4Ӿ[X2Qtepczs]n @Qe"1yO{rfjn9m'$#xOb<Z$@Zk8g٥A!2;0)3WNmZЍ;[ )jQu%:t:2~J[nƔj|Ā1z5 sqGFz \+KRK{N,)-m0l7cU|"6NcZaq{U7,Cܰ㶥w[ b(2aNYLbi^UyLE{E趫S m2v= EkQMh=zN*[w[3{Aδ4ؐs/.cU~>B|`n% uKǣ&@< (PM7+oR³Lqw<~"5ˆ{Ais .W9c A"> d B茉*w[ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B(Dn ~ XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BLUTTCLO, $CODEJ$PDATA$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_T_DS FOR$IO_T_V_DS FOR$READ_SF FOR$WRITE_SF FOR$WRITE_SLoP,Pd P&PPP;P&P,P P,PjP)PiP,P,P,+P*P,PP*9PPPP PTPaPP P<KP8PP8P}P P79 PG P#W Pr P P8 P P# P P# Ppj P& Pj P# P PM , ww1 ږ014 DUMPSPHOT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 DUMPSPHOTP** INVALID DIMENSION.** INVALID NCOL=** WARNING: filename truncated.** Enter FILENAME for spectrum output to ASCII file,TABLE.TAB|COLUMN for spectrum output to IRAF table.$DUMPSPHOT> ]|.TAB** DUMPSPHOT aborted.) DUMPSPHOTP        K  %DD3G3z       8 XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bo           PK[}PQP}PQ$P } PQ,P(}PQ4P0Ь<HЬ P \Ь$d$pЬ(x(˄ռ~ FOR$WRITE_SLː FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1ռѼ~ FOR$WRITE_SL˘ FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1ˠWORD1k1kVVW,WF Kh˰UPCASE(KhkPPPK~ FOR$WRITE_SL˼ FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSWF FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSˈ FOR$IO_T_DS FOR$IO_END-Kh n1~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SF FOR$IO_T_DS FOR$IO_END~ FOR$READ_SFˈ FOR$IO_T_DS FOR$IO_ENDUPCASE-Kh n1޼޼޼  CHECKFORMWORD1, LIB$INDEXPVVЫVVWWPPWWWW VV8Gh<H LIB$INDEXPVTGhXd LIB$INDEXP1Ѽ޼˄޼ˈ޼ˌp DUMPSPHOT_TAB1Ѽ޼ˤ޼˨޼ˬ޼ ˰ː DUMPSPHOT_TABo XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BuѼ޼޼޼޼ ޼$˴ DUMPSPHOT_TABѼ޼޼޼޼ ޼$޼( DUMPSPHOT_TAB1Ѽ޼޼ ޼$ DUMPSPHOT_DAT1Ѽ޼<޼@޼D޼ H( DUMPSPHOT_DATѼ޼`޼d޼h޼ l޼$pL DUMPSPHOT_DATѼ޼ˈ޼ˌ޼ː޼ ˔޼$˘޼(˜t DUMPSPHOT_DAT)KhˠWORD1 ~<WPPWQ\PU XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B}  d> aww1" ږ013DUMP_DAT01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133DUMP_DATXP$Output file : ** DUMP_ASCII: COLUMNS 8- SKIPPED.Data dump complete NCOL= NROW=)DUMP_DATHP              F] (1I]POH[}PQPkЬ Ь ,Ь4@ЬHTЬ \ hЬ$p$|Ь(˄(ːռռ -k nO~ FOR$WRITE_SF˜ FOR$IO_T_DS FOR$IO_ENDO~ FOR$READ_SF˔ FOR$IO_T_DS FOR$IO_END,k F-F nˤUPCASE-F Q˰FOR$OPENP1m޻RѼм STSP@U]~ FOR$WRITE_SL߅ FOR$IO_F_R FOR$IO_ENDST1޻,SѼм TUTP@VP@,W]~ FOR$WRITE_SL߆ FOR$IO_F_R߇ FOR$IO_F_R FOR$IO_ENDTU1Ѽм UVUWP@,XP@@Y]~ FOR$WRITE_SL߇ FOR$IO_F_R߈ FOR$IO_F_R߉ FOR$IO_F_R FOR$IO_ENDUV1Ѽм VWVX,YP@@ZP@TU]~ FOR$WRITE_SL߈ FOR$IO_F_R߉ FOR$IO_F_Rߊ FOR$IO_F_R߅ FOR$IO_F_R FOR$IO_ENDVW1Ѽ1м WXWY,Z XCAL29.BCK}Ok[XCAL]XCAL.OLB;64BP@@VP@TUP@hT]~ FOR$WRITE_SL߉ FOR$IO_F_Rߊ FOR$IO_F_R߆ FOR$IO_F_R߅ FOR$IO_F_R߄ FOR$IO_F_R FOR$IO_ENDWX1Ѽ1м XYXZP@,WP@@VP@TUP@hT]~ FOR$WRITE_SLߊ FOR$IO_F_R߇ FOR$IO_F_R߆ FOR$IO_F_R߅ FOR$IO_F_R߄ FOR$IO_F_RI| FOR$IO_F_R FOR$IO_ENDXY1Ѽ1м TUT1X,Y@ZP@TWP@hV]~ FOR$WRITE_SL߈ FOR$IO_F_R߉ FOR$IO_F_Rߊ FOR$IO_F_R߇ FOR$IO_F_R߆ FOR$IO_F_RE| FOR$IO_F_REې FOR$IO_F_R FOR$IO_ENDTUѼ~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_T_DSݼ ; FOR$IO_L_V FOR$IO_END FOR$CLOSEQPNONE ODUMP_DAT UPCASEFOR$OPEN FOR$CLOSE$CODEU$PDATA@$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_T_DS FOR$READ_SF FOR$WRITE_SF FOR$WRITE_SLgPpP|PGP PPP;P+HPUPJ`P;PPZPLP:PrPasPPPsP8 PP~PPP?P1WKŶŪww1' ږ011EFFLAM0Y& XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B61 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133 EFFLAMP** No passband.FLAMFNUABMAGSTMAGVEGAMAG** invalid or not implemented.** Invalid passband integral=** EFFLAM aborted. EFFLAMP       ,(,, SPECFORM@4( SPECFORM@(,( SPECFORM@, SPECFORM@2#2 SPECFORM@# SPECFORM@ #2# SPECFORM@2 SPECFORM@8#<8 SPECFORM@D# SPECFORM@ #8# SPECFORM@8 SPECFORM@@C_|PO[Ь Ь ( 4Ь<H}PQPPLռ~ FOR$WRITE_SLT FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޻ TмQQAd~ FOR$WRITE_SL\ FOR$IO_T_DSݼ FOR$IO_L_Vߤoً `]TrLݢ 5mYo=Ь5T~8#-`[͜K:I pAlz-?lҜ\>R'P5)/#wL#BEn.Bxa/Xh4ؘVY*#3(UJbwBfW<: ]4d|D`F4`!3ޯ6#sqƖ)W#AAOGAl[w'^zstM{4W׭g ݃] q i5v!&pg0Э*gTT~j7V2Pގ2$ i si~!SZBZ FIUN 80v8"/Sdzׄ{o˥SMxh|usͲkLj_ mGgA8؉0]pѧ #3\ݿ:@"oru)S Lz߰=mU[j"ٶx$~lM@QG_pU AU+>Kz.'dEvП2XHx|ڦk $u{-h!$]C 5Ú BonA+FE"a  XCAL29.BCK}Ok[XCAL]XCAL.OLB;64B FOR$IO_F_RмP@d FOR$IO_F_R FOR$IO_END1|k|-LP #޼h޼l޼ t޼xd SUMFILTSPECVPk޼ˀ޼˄޼ ˌ޼ː| SUMFILTSPECVP1-LP -LP (-LP ޼˘޼˜޼ ˤ޼˨˔ SUMFILTSPECVPk޼˰޼˴޼ ˼޼ˬ SUMFILTSPECVP1-LP ޼޼޼ ޼ SUMFILTSPECVPk޼޼޼ ޼ SUMFILTSPECVP1-LP ޼޼޼ ޼ SUMFILTSPECVPk޼޼ ޼   SUMFILTSPECVP1-LP мPQP޻4R޻HSHY4Z XEWVWU`UkDWVWU`UPQ1-LP ,1޼8޼<޼@޼H4SPECFORM޼T޼X޼ `޼dP SUMFILTSPECVPk޼l޼p޼ x޼|h SUMFILTSPECVP޼˔޼˘޼˜޼ˤːSPECFORM1-LP 21޼޼޼޼˼SPECFORM޼޼޼ ޼ SUMFILTSPECVPk޼޼޼ ޼ SUMFILTSPECVP޼޼ ޼$޼,SPECFORM1-LP 81޼H޼L޼P޼XDSPECFORM޼d޼h޼ p޼t` SUMFILTSPECVPk޼|޼ˀ޼ ˈ޼ˌx SUMFILTSPECVP޼ˤ޼˨޼ˬ޼˴ˠSPECFORMsk~ FOR$WRITE_SL FOR$IO_T_DS}k~ FOR$IO_D_V FOR$IO_ENDgkPvPP~ FOR$WRITE_SL˼ FOR$IO_T_DSL FOR$IO_T_DS FOR$IO_T_DS FOR$IO_END~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_ENDPPJYQMJYQPHOTLAMPHOTNUCOUNTS_W XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bz OEFFLAM SUMFILTSPECSPECFORM$CODE$PDATA$LOCAL FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_D_V FOR$IO_T_DS FOR$WRITE_SL:P)aPzrPAP*PI PgP+P9PNPPNPPN<P6MPJXP;PP5P=GPPPwP(P=fZ c ww1 j> ږ012EFFSTIM01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133EFFSTIM-P** No passband.MAG** EFFSTIM aborted.EFFSTIMP      @@@P|H[ЬЬ  $Ь,8}PQ@P<ռ~ FOR$WRITE_SLD FOR$IO_T_DSݼ FOR$IO_L_V FOR$IO_END1޻RмQQAb~ FOR$WRITE_SLL FOR$IO_T_DSݼ FOR$IO_L_Vߢ FOR$IO_F_RмP@b FOR$IO_F_R FOR$IO_END޼X޼\޼ `޼dTRATEPPV޼p޼t޼ xlUNITPPˈ LIB$INDEXPVP MTH$ALOG10_R5DPBPDVЫP~ FOR$WRITE_SL˔ FOR$IO_T_DS FOR$IO_ENDP |HEFFSTIMRATEUNIT LIB$INDEX MTH$ALOG10?$CODE&$PDATA$LOCAd XCAL29.BCK}Ok[XCAL]XCAL.OLB;64Bq L FOR$IO_END FOR$IO_L_V FOR$IO_F_R FOR$IO_T_DS FOR$WRITE_SL MTH$ALOG10_R5?:P)aPrPAPnPKP.PP2&?ww1? ږ013EVALBAND01 7-Jun-1993 14:44 7-Jun-1993 14:44VAX FORTRAN V5.7-133EVALBANDP,.:]Enter the name of the components list file, or press to$ components list= components loaded.Enter the name  of the instrument graph file, or press to$instrument graph= graph links loaded.** SHELLSORT failed. I IRANK(I) NODE1(IRANK(I)) NODE2 COMPONENT KEYWORD** Graph search error code =** No components found in path thru graph.** WARNING: keyword not used clear component** WARNING: passband not available for component.** skipped.** EVALBAND aborted.)   EVALBANDP    (x''(   ''(xdd@<@Th|DD<DLWD