Viewing contents of file '../idllib/sdss/allpro/good_reruns.pro'
PRO good_reruns
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;+
;
; NAME:
; GOOD_RERUNS
;
; PURPOSE:
; Find the rerun for runs in the !SDSS_DATA_DIR, and see if there
; are any tsObj files there.
;
; CALLING SEQUENCE:
; good_reruns
;
; INPUTS:
; NONE: gets its info from system variables defined in SDSSIDL_SETUP
;
; OPTIONAL INPUTS:
; NONE:
;
; KEYWORD PARAMETERS:
; NONE
;
; OUTPUTS:
; Outputs !RUN_STATUS_FILE, a fits file containing info about
; known runs.
;
; OPTIONAL OUTPUTS:
; NONE
;
; CALLED ROUTINES:
; SDSSIDL_SETUP
; ADD_ARRVAL
; FETCH_RERUN
; FETCH_DIR
; FETCH_FILE_LIST
; MWRFITS
;
; PROCEDURE:
;
;
;
; REVISION HISTORY:
; 14-NOV-2000 Erin Scott Sheldon UofMich
;
;
;-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sdssidl_setup
IF NOT !sdssidl_def.sdss_data_dir_defined THEN BEGIN
message,'!SDSS_DATA_DIR must be defined'
ENDIF
IF NOT !sdssidl_def.run_status_file_defined THEN BEGIN
message,'!RUN_STATUS_FILE must be defined'
ENDIF
spawn, 'ls '+!SDSS_DATA_DIR,answer
IF answer[0] EQ '' THEN BEGIN
print,'Nothing Found!'
return
ENDIF
nans=n_elements(answer)
FOR i=0L, nans-1 DO IF strnumber(answer[i]) THEN add_arrval, long(answer[i]), runs
nrun = n_elements(runs)
s=create_struct("stripe", -1, "run", 0L, "rerun", -2, "bad", 0L)
run_status = replicate(s, nrun)
run_status.run = runs
;; link known to point at non-existing directory
; w=where(runs NE 752 AND runs NE 745, ngood)
ngood = n_elements(runs)
w=lindgen(ngood)
;; check if link properly set
FOR i=0L, ngood-1 DO BEGIN
fetch_rerun, run_status[w[i]].run, rer
run_status[w[i]].rerun = rer
ENDFOR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; check if directories are OK
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
w=where(run_status.rerun GE 0, ngood)
FOR i=0L, ngood-1 DO BEGIN
ind=w[i]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; check for asTrans file
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
transdir = !SDSS_DATA_DIR+ ntostr(run_status[ind].run)+'/astrom/'
spawn,'ls '+transdir+' | grep asTrans | wc -w',nastrans
nastrans = long(nastrans[0])
IF nastrans EQ 0 THEN run_status[ind].bad = run_status[ind].bad + 2L^0
FOR camcol=1,6 DO BEGIN
fetch_dir, run_status[ind].run, camcol, run_status[ind].rerun, dir, atldir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; check for tsObj,fpAtlas,psField files
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fetch_file_list, dir, files, fnums
;; If there are tsObj files, check for fpAtlas or psField files.
spawn,'ls '+atldir+' | grep fpAtlas | wc -w',natlas
spawn,'ls '+atldir+' | grep psField | wc -w',npsfield
natlas = long(natlas[0])
npsfield = long(npsfield[0])
IF (files[0] EQ '') THEN BEGIN
run_status[ind].bad = run_status[ind].bad + 2L^(camcol)
ENDIF ELSE BEGIN
IF run_status[ind].stripe EQ -1 THEN BEGIN
hdr=headfits(files[0])
run_status[ind].stripe = sxpar(hdr, 'stripe')
ENDIF
ENDELSE
IF natlas EQ 0 THEN run_status[ind].bad = run_status[ind].bad + 2L^(camcol+6)
IF npsfield EQ 0 THEN run_status[ind].bad = run_status[ind].bad + 2L^(camcol+12)
ENDFOR
jump:
ENDFOR
;; by-hand fixes. Some of these are just to maximize the area
;; so certain reruns are better. Others the linked rerun had
;; no tsObj files or fpAtlas files
w=where(run_status.run EQ 752,nw)
IF nw NE 0 THEN BEGIN
run_status[w].stripe = 10
run_status[w].rerun = 1
run_status[w].bad = 0
ENDIF
w=where(run_status.run EQ 756,nw)
IF nw NE 0 THEN BEGIN
run_status[w].stripe = 10
run_status[w].rerun = 1
run_status[w].bad = 0
ENDIF
w=where(run_status.run EQ 94,nw)
IF nw NE 0 THEN BEGIN
run_status[w].stripe = 82
run_status[w].rerun = 3
run_status[w].bad = 0
ENDIF
w=where(run_status.run EQ 125,nw)
IF nw NE 0 THEN BEGIN
run_status[w].stripe = 82
run_status[w].rerun = 3
run_status[w].bad = 0
ENDIF
w=where(run_status.run EQ 1043,nw)
IF nw NE 0 THEN BEGIN
run_status[w].stripe = 76
run_status[w].rerun = 0
run_status[w].bad = 0
ENDIF
print
print,'!RUN_STATUS_FILE: ',!RUN_STATUS_FILE
print
mwrfits, run_status, !RUN_STATUS_FILE, /create
return
END