Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.naic.edu/~rminchin/idl/masfindfiles.pro
Дата изменения: Fri Aug 29 21:27:24 2014
Дата индексирования: Sun Apr 10 11:37:32 2016
Кодировка:

Поисковые слова: jupiter
pro masfindfiles,projid,filesum,srcname=srcname,obsmode=obsmode,scantype=scantype,band=band,num=num,freqrange=freqrange,rarange=rarange,decrange=decrange,year=year,month=month,day=day,beam=beam,side=side,group=group,onoff=onoff,dps=dps,alfa=alfa,zoa=zoa,allbm=allbm

; Check for required parameters

if (n_elements(projid) NE 1) then begin
print, 'ERROR: projid must be given!'
filesum = -1
endif else begin


; Check for a defaults option and set up to find that scan
; /onoff = look for the on of an onoff scan
; /dps - look for the t-on of a dps scan (not always the first scan in
; the sequence!)
; /alfa - look for the central beam of a generic alfa scan (grp 0)
; /zoa - look for the central beam of a zoa scan (grp 1)
; /allbm - look at all beams (use with /zoa or /alfa). Will not override
; beam setting.
;
; freqrange - two values, in MHz
; rarange, decrange - two values, in decimal degrees


defaultset = 0
if(n_elements(allbm) NE 1) then allbm = 0

if (n_elements(onoff) EQ 1) then begin
if (onoff) then begin
obsmodedef = 'ONOFF'
scantypedef = 'ON'
groupdef = 0
beamdef = 3
sidedef = 1
defaultset = 1
endif
endif

if (n_elements(dps) EQ 1) then begin
if (dps) then begin
scantypedef = 'ON-T'
groupdef = 0
beamdef = 3
sidedef = 1
defaultset = 1
endif
endif

if (n_elements(alfa) EQ 1) then begin
if (alfa) then begin
groupdef = 0
if (allbm eq 0) then begin
beamdef = 0
endif
sidedef = 0
defaultset = 1
endif
endif

if (n_elements(zoa) EQ 1) then begin
if (zoa) then begin
scantypedef = 'ON'
obsmodedef = 'ON'
groupdef = 1
if (allbm EQ 0) then begin
beamdef = 0
endif
sidedef = 0
defaultset = 1
endif
endif

if (defaultset) then begin
if ((n_elements(group) EQ 0) AND (n_elements(groupdef) EQ 1)) then group = groupdef
if ((n_elements(beam) EQ 0) AND (n_elements(beamdef) EQ 1)) then beam = beamdef
if ((n_elements(side) EQ 0) AND (n_elements(sidedef) EQ 1)) then side = sidedef
if ((n_elements(obsmode) EQ 0) AND (n_elements(obsmodedef) EQ 1)) then obsmode = obsmodedef
if ((n_elements(scantype) EQ 0) AND (n_elements(scantypedef) EQ 1)) then scantype = scantypedef
if ((n_elements(group) EQ 0) AND (n_elements(groupdef) EQ 1)) then group = groupdef
endif

; Check for searching options

if (n_elements(band) EQ 1) then doband = 1 else doband = 0

if (n_elements(srcname) EQ 1) then dosrc = 1 else dosrc = 0

if (n_elements(obsmode) EQ 1) then doobs = 1 else doobs = 0

if (n_elements(scantype) EQ 1) then doscan = 1 else doscan = 0

if (n_elements(freqrange) GE 1) then begin
if (n_elements (freqrange) EQ 2) then begin
if freqrange[0] gt freqrange [1] then begin
tmp = freqrange[0]
freqrange[0] = freqrange[1]
freqrange[1] = tmp
endif
dofreq = 1
; Convert freqrange from MHz to Hz
freqrange = freqrange * 1E6
endif else begin
print, 'WARNING: freqrange does not have 2 elements - ignored!'
dofreq = 0
endelse
endif else dofreq = 0

if (n_elements(rarange) GE 1) then begin
if (n_elements (rarange) EQ 2) then begin
if rarange[0] gt rarange [1] then begin
tmp = rarange[0]
rarange[0] = rarange[1]
rarange[1] = tmp
endif
dora = 1
endif else begin
print, 'WARNING: rarange does not have 2 elements - ignored!'
dora = 0
endelse
endif else dora = 0

if (n_elements(decrange) GE 1) then begin
if (n_elements (decrange) EQ 2) then begin
if decrange[0] gt decrange [1] then begin
tmp = decrange[0]
decrange[0] = decrange[1]
decrange[1] = tmp
endif
dodec = 1
endif else begin
print, 'WARNING: decrange does not have 2 elements - ignored!'
dodec = 0
endelse
endif else dodec = 0

print, 'Finding files with:'
print, 'Project ID ',projid
if (n_elements(year) GT 0) then print,'Year: ',year
if (n_elements(month) GT 0) then print,'Month: ',month
if (n_elements(day) GT 0) then print,'Day: ',day
if (n_elements(beam) GT 0) then print,'Beam: ',beam
if (n_elements(side) GT 0) then print,'Side: ',side
if (n_elements(group) GT 0) then print,'Group: ',group
if (n_elements(num) GT 0) then print, 'Num = ',num

; Get the list of files

nfiles=masfilelistp('',fnmiar,projid=projid,year=year,mon=month,day=day,bm=beam,band=side,num=num,grp=group,/appBm)

print,'Found ',nfiles,' files.'
print,'Getting header information...'

; Get summary info for the files (can take a while!)

nsum = masfilesum('',sumI,fnmI=fnmiar)

print,'Retrieved header information for ',nsum,' files.'
if (nsum NE nfiles) then print,'WARNING: number of file headers does not match number of files!'

sumfound = sumI
cont = 1

if (dosrc AND cont) then begin
print,'Matching srcname = ',srcname
filefind = where(strmatch(sumfound.h.object,srcname,/fold_case))
;sumfound.h.object EQ srcname)
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! src = ',srcname
cont = 0
endelse
endif

if (doband AND cont) then begin
print,'Matching band = ',band
filefind = where(sumfound.h.frontend EQ band)
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! band = ',band
cont = 0
endelse
endif

if (doobs AND cont) then begin
print,'Matching obsmode = ',obsmode
filefind = where(strcmp(sumfound.h.obsmode,obsmode,/fold_case))
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! obsmode = ',obsmode
cont = 0
endelse
endif

if (doscan AND cont) then begin
print,'Matching scantype = ',scantype
filefind = where(strcmp(sumfound.h.scantype,scantype,/fold_case))
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! scantype = ',scantype
cont = 0
endelse
endif

if (dofreq AND cont) then begin
print,'Matching freqrange = ',freqrange
filefind = where((sumfound.h.crval1 GT freqrange[0]) AND (sumfound.h.crval1 LT freqrange[1]))
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! freqrange = ',freqrange
cont = 0
endelse
endif

if (dora AND cont) then begin
print,'Matching rarange = ',rarange
filefind = where((sumfound.h.crval2 GT rarange[0]) AND (sumfound.h.crval2 LT rarange[1]))
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! rarange = ',rarange
cont = 0
endelse
endif

if (dodec AND cont) then begin
print,'Matching decrange = ',decrange
filefind = where((sumfound.h.crval3 GT decrange[0]) AND (sumfound.h.crval3 LT decrange[1]))
if (filefind[0] NE -1) then begin
sumfound = sumfound[filefind]
endif else begin
print,'ERROR: No files matched! decrange = ',decrange
cont = 0
endelse
endif

if (cont) then begin
print, 'Found ',n_elements(sumfound),' matches.'
filesum = sumfound
endif else begin
print,'No matches - Returning data on all files found.'
filesum = sumI
endelse

endelse
return
end