;+ ; NAME: ; PH_MKDARK ; ; PURPOSE: ; Make dark frames from PHARO data ; ; CALLING SEQUENCE: ; PH_MKDARK, dark, FRNO=, DATADIR=, PROCDIR=, DATE= ; ; INPUTS: ; frno = vector of frame numbers for one set of darks. If not given, ; will prompt for first and last frame numbers. ; ; datadir = full path to data directory. If not specified, determined ; from date. ; ; procdir = full path to processing directory. If not specified, ; determined from date. ; ; date = UT date in 'YYMMDD' format. User will be prompted for input ; if datadir and procdir are not defined. ; ; OUTPUTS: ; dark = dark frame (1024x1024 LONG array) ; ; EXAMPLE: ; IDL> PH_MKDARK, dark, fr=484+INDGEN(9), date='060908' ; ; MODIFICATION HISTORY: ; Original writen 9/10/06, A. Bouchez, Caltech Optical Observatories ; Cleaned up and updated 5/07 A. Bouchez, COO ;- PRO PH_MKDARK, dark, frno=frno, $ datadir=datadir, procdir=procdir, date=date ;;; Define constants pfmt = '("ph",I4.4,".fits.gz")' ; PHARO filename format dfmt = '("dark_",I5.5,"ms.fits")' ; Filename format for saved darks ;;; Parse keywords if not (KEYWORD_SET(datadir) and KEYWORD_SET(procdir)) then begin if not KEYWORD_SET(date) then begin date = '' READ, 'Please enter date ("YYMMDD"): ', date endif date = STRING(date,f='(I6.6)') datadir = '/data/pharo_' + date + '/' procdir = '/Users/abouchez/pharo/' + date + '/' endif if not KEYWORD_SET(frno) then begin fstr= '' READ, 'Please enter first frame number: ', fstr lstr = '' READ, 'Please enter last frame number: ', lstr flno = FIX([fstr, lstr]) frno = flno[0] + LINDGEN(flno[1]-flno[0]+1) endif ;;; Process darks and save MESSAGE, /info, 'Processing dark frames: ' + $ STRING(MINMAX(frno),f='(I0.0,"-",I0.0)') dark = MEDIM(datadir+STRING(frno, f=pfmt), hd, /pharo) hd0 = hd[*,0] dname = STRING(SXPAR(hd0,'T_INT'), f=dfmt) SXADDPAR, hd0, 'BITPIX', 32 MESSAGE, /info, ' Writing ' + dname WRITEFITS, procdir+dname, dark, hd0 END