Viewing contents of file '../idllib/contrib/icur/addred.pro'
;*****************************************************************************
PRO ADDRED,IM,WAVE,FLUX,EBMV,trans ; CORRECT FOR INTERSTELLAR EXTINCTION
; TAKEN FROM [210,021]NUNRED.PRO 4/5/83
; IM=0,-1 FOR UNRED
COMMON COM1,H
COMMON VARS,VAR1,VAR2,VAR3,VAR4,VAR5
COMMON ICDISK,ICURDISK,ICURDATA,ISMDAT
common comxy,xcur,ycur,zerr,rsc,lu3
if n_elements(var3) eq 0 then var3=(2*256) ;REDDENING TABLE
nhd=n_elements(h)
TABLE=FIX(VAR3 AND 7*256)/256
TABLE=FIX(TABLE)
IF (TABLE LT 0) OR (TABLE GT 5) THEN TABLE=2
IF N_PARAMS(0) LE 3 THEN begin
IF N_ELEMENTS(H) GT 92 THEN BEGIN
if H(92) ne 0 then cext=string(float(H(92))/1000.,'(F6.2)') else cext=''
z=' Current E(B-V)='+cext
if strlen(cext) gt 0 then print,z
endif
READ,' Enter E(B-V); - to redden: ',EBMV
endif
EBMV=-FLOAT(EBMV)
trans=wave*0.+1.
IF EBMV EQ 0. THEN begin
if nhd gt 92 then begin
h(91)=0
h(92)=0
endif
RETURN
endif
IF ABS(EBMV LT 100.) THEN NH=EBMV*5.9E21 ELSE NH=EBMV
Q=912.
SI=N_ELEMENTS(WAVE)-1
SIG=WAVE*0.
LMAX=WAVE(SI)
APB=(LMAX-WAVE(0))/FLOAT(SI)
IMIN=(((Q-WAVE(0))/APB > 0) < SI)
IF LMAX GT Q THEN BEGIN ; USE A TABULATED REDDENING LAW
;
; if user is to enter the name of the table file
GET_LUN,LUN
TABFILE=''
IF TABLE EQ 0 THEN REPEAT BEGIN
PRINT,'Please enter the name of the file containing the extinction curve'
PRINT,'you want to use. The wavelength information must be in record one'
PRINT,'and the flux in record 2.'
READ,'What is the name of the file ?',TABFILE
OPENR,LUN,TABFILE
END UNTIL !ERR GT 0
;
IF TABLE EQ 1 THEN TABFILE=ismdat+'SAVMAT.DAT' ; Savage and Mathis
IF TABLE EQ 2 THEN TABFILE=ismdat+'SEATON.DAT' ; Seaton
IF TABLE EQ 3 THEN TABFILE=ismdat+'NANDY.DAT' ; Nandy
IF TABLE EQ 4 THEN TABFILE=ismdat+'ORI.DAT' ; Bohlin & Savage
IF TABLE EQ 5 THEN TABFILE=ismdat+'SMC.DAT' ; Sm Magellenic Clouds
OPENR,LUN,TABFILE
tlun=fstat(lun) & zlen=tlun.rec_len/4
Z=ASSOC(LUN,FLTARR(zlen)) ; Z is always associated variable
XTAB=Z(0) ; S & M wavelength in record 0
YTAB=Z(1) ; S & M flux in record 1
CLOSE,LUN & FREE_LUN,LUN
I=WHERE(XTAB GT 0)
XTAB=FLOAT(XTAB(I)) ; extract valid points and make sure they
YTAB=FLOAT(YTAB(I)) ; are floating point format
F=FLOAT(FLUX) ; make sure input wave and flux are
W=FLOAT(WAVE) ; floating point format
TAB='??!! SEE DATA AID !!??'
IF TABLE EQ 1 THEN TAB=' (Savage and Mathis) '
IF TABLE EQ 2 THEN TAB=' (Seaton) '
IF TABLE EQ 3 THEN TAB=' (Nandy) '
IF TABLE EQ 4 THEN TAB=' (Orion) '
IF TABLE EQ 5 THEN TAB=' (SMC) '
IF TABLE EQ 0 THEN TAB=TABFILE
;PRINT,'The flux is being unreddened.',TAB,'E(B-V) = ',EBMV
X=INTERPOL(YTAB,XTAB,W) ; interp table to current wavelngth scale
SIG(IMIN)=1.65E-22*(X(IMIN:*)+3.1)
LMAX=Q
ENDIF
IF WAVE(0) LT Q THEN BEGIN
FOR I=0,IMIN DO BEGIN
LAM=WAVE(I)
IF (LAM LE 912.) AND (LAM GT 504.) THEN BEGIN ; H-He
SLO=2.58 & INT=-24.86 & GOTO,SIGM
ENDIF
IF (LAM LE 504.) AND (LAM GT 43.648) THEN BEGIN ; He-C
SLO=2.72 & INT=-25.05 & GOTO,SIGM
ENDIF
IF (LAM LE 43.648) AND (LAM GT 30.99) THEN BEGIN ; C-N
SLO=2.87 & INT=-25.22 & GOTO,SIGM
ENDIF
IF (LAM LE 30.99) AND (LAM GT 23.301) THEN BEGIN ; N-O
SLO=3.06 & INT=-25.48 & GOTO,SIGM
ENDIF
IF (LAM LE 23.301) AND (LAM GT 14.3018) THEN BEGIN ; N-Ne
SLO=2.54 & INT=-24.52 & GOTO,SIGM
ENDIF
IF (LAM LE 14.3018) AND (LAM GT 9.5122) THEN BEGIN ; Ne=Mg
SLO=2.52 & INT=-24.46 & GOTO,SIGM
ENDIF
IF (LAM LE 9.5122) AND (LAM GT 6.738) THEN BEGIN ; Mg-Si
SLO=1.91 & INT=-23.80 & GOTO,SIGM
ENDIF
IF (LAM LE 6.738) AND (LAM GT 5.019) THEN BEGIN ; Si-S
SLO=3.73 & INT=-25.27 & GOTO,SIGM
ENDIF
IF (LAM LE 5.019) AND (LAM GT 3.871) THEN BEGIN ; S-A
SLO=2.96 & INT=-24.68 & GOTO,SIGM
ENDIF
IF LAM LE 3.871 THEN BEGIN ;FINALLY SHORTWARD OF ARGON K EDGE
SLO=2.99 & INT=-24.68 & GOTO,SIGM
ENDIF
SIGM:SIG(I)=10.^(((SLO)*ALOG10(LAM))+INT)
ENDFOR
ENDIF
T=(SIG*NH<80.)
TRANS=EXP(-T)
FLUX=Flux*TRANS ; F*10.^(.4*EBMV*(X+3.1)) ; derive unreddened flux
if (im ne -1) and (nhd gt 0) and (n_elements(lu3) gt 0) then begin
H(91)=TABLE ; unreddening flag
H(92)=H(92)+FIX(1000*EBMV) ; total E(b-v)*1000
IF H(92) EQ 0 THEN H(91)=0 ;NO REDDENING
printf,lu3,'-5'
printf,lu3,'Data Unreddened: Table=',TABLE,' ',TAB,'; E(B-V)=',EBMV
endif
RETURN
END