Viewing contents of file '../idllib/ghrs/pro/calfos_ivs.pro'
pro calfos_ivs,ivs,ypos,config,pattern,net,h,err,flux
;+
; CALFOS_WAV
;
; Conversion to absolute flux units.
;
; CALLING SEQUENCE:
; calfos_ivs,ivs,ypos,config,pattern,net,h,err,flux
;
; INPUTS:
; ivs - inverse sensitivity array (from calfos_rdivs)
; ypos - ybases of the upper and lower aperture of an aperture
; pair (from routine calfos_ccs1)
; config - configuration vector (from calfos_rd)
; pattern - pattern vector (from calfos_rd)
; net - net spectra array
;
; INPUTS/OUTPUTS:
; h - FITS header
; err - propagated statistics array
; OUTPUTS:
; flux - absolute flux array
;
; HISTORY:
; version 1 D. Lindler Jan 1990
;-
;----------------------------------------------------------------------------
;
; extract pattern and configuration
;
ybase = pattern(4)
yrange = pattern(5)
ysteps = pattern(6)
ns = pattern(8)
slices = pattern(9)
nreads = pattern(10)
nframes = slices*nreads
fchnl = pattern(0)
nxsteps = pattern(3)
polar_id = strtrim(config(2))
if strtrim(config(7)) eq 'PAIR' then paired=1 else paired=0
ytypes = strarr(3)
for i=0,2 do ytypes(i) = config(i+4)
fgwa_id = strtrim(config(3))
;
; determine number of object spectra and thier ysteps
;
if ysteps le 3 then begin
nobj = 0
ystep = intarr(3)
for i=0,2 do begin
if strtrim(ytypes(i)) eq 'OBJ' then begin
ystep(nobj) = i
nobj = nobj+1
endif
endfor
end else begin
ystep = indgen(ysteps) ;they are all object
nobj = ysteps
end
if nobj eq 0 then return ;we should not be here
;
; determine which sensitivity vector to use
;
if polar_id ne 'C' then begin
pos = indgen(nobj)<1
end else begin
if paired then begin
y = ybase + 32*yrange/ysteps*ystep
pos = fix( abs(y-ypos(1)) lt abs(y-ypos(0)) )
end else begin
pos = intarr(nobj)
end
end
;
; loop on frames and object spectra
;
flux = fltarr(ns,nobj,nframes)
for frame = 0,nframes-1 do begin
for i=0,nobj-1 do begin
flux(0,i,frame) = net(*,i,frame)*ivs(*,pos(i))
if n_elements(err) gt 1 then $
err(0,i,frame) = err(*,i,frame)*ivs(*,pos(i))
end
end
return
end