;+ ; NAME: ; smei_sky_field ; PURPOSE: ; Maps keywords to Fits extension numbers in the ; various types of SMEI skymaps ; CATEGORY: ; camera/idl/sky ; CALLING SEQUENCE: FUNCTION smei_sky_field, files, $ exten_no = exten_no , $ equatraw = equatraw , $ ; sky, equ northraw = northraw , $ ; sky, equ southraw = southraw , $ ; sky, equ equatcnt = equatcnt , $ ; sky northcnt = northcnt , $ ; sky southcnt = southcnt , $ ; sky equatflat = equatflat , $ ; equ northflat = northflat , $ ; equ southflat = southflat , $ ; equ equatstars = equatstars, $ ; equ northstars = northstars, $ ; equ southstars = southstars, $ ; equ dirtysky = dirtysky , $ ; sky : SKYD__LO_SKY = 1 orbtime = orbtime , $ ; sky, equ, ecl : SKYD__LO_TIME = 2 orbsecs = orbsecs , $ ; sky, equ, ecl : SKYD__LO_SECS = 9 psfn = psfn , $ ; sky : SKYD__LO_PSFN = 3 psfe = psfe , $ ; sky : SKYD__LO_PSFE = 4 badsky = badsky , $ ; sky : SKYD__LO_CUT = 5 badhtm = badhtm , $ ; sky : SKYD__LO_FRAC = 6 fovx = fovx , $ ; sky, equ : SKYD__LO_FOVX = 10 Added in version 5.1 thetax = thetax , $ ; sky : SKYD__LO_ROTX = 7 thetay = thetay , $ ; sky : SKYD__LO_ROTY = 8 hits = hits , $ ; sky, equ, ecl : SKYD__LO_HIT = 11 Added in version 6.0 badpixels = badpixels , $ ; sky sunsky = sunsky , $ ; ecl: helioecliptic sky map sunflat = sunflat , $ ; ecl: helioecliptic sky map (flat) suntime = suntime , $ ; ecl: helioecliptic orbit fraction sunsecs = sunsecs , $ ; ecl: helioecliptic orbit time sunhits = sunhits , $ ; ecl: helioecliptic contr pix count fullsky = fullsky , $ ; ecl: equatorial lores skymap fullflat = fullflat , $ ; ecl: equatorial lores skymap (flat) hires_map = hires_map , $ lores_map = lores_map , $ eclsun_map = eclsun_map, $ frame_map = frame_map , $ adus_map = adus_map , $ angle_map = angle_map , $ cvsmei_mode = cvsmei_mode,$ droplist = droplist , $ count = count , $ map_types = map_types ; INPUTS: ; files array[n]; type: string ; file names ; OPTIONAL INPUT PARAMETERS: ; OUTPUTS: ; result array[n]; type: integer ; extension number (-1 if keyword does ; not match an extension number) ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; InitVar, smei_filename ; PROCEDURE: ; MODIFICATION HISTORY: ; MAR-2008, Paul Hick (UCSD/CASS) ; APR-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ; Added keywords /sun* ;- InitVar, hires_map , /key InitVar, lores_map , /key InitVar, eclsun_map , /key InitVar, frame_map , /key InitVar, adus_map , /key InitVar, angle_map , /key InitVar, cvsmei_mode, /key InitVar, equatraw , /key InitVar, northraw , /key InitVar, southraw , /key InitVar, equatcnt , /key InitVar, northcnt , /key InitVar, southcnt , /key InitVar, equatflat , /key InitVar, northflat , /key InitVar, southflat , /key InitVar, equatstars , /key InitVar, northstars , /key InitVar, southstars , /key InitVar, dirtysky , /key InitVar, orbtime , /key InitVar, orbsecs , /key InitVar, psfn , /key InitVar, psfe , /key InitVar, badsky , /key InitVar, badhtm , /key InitVar, fovx , /key InitVar, thetax , /key InitVar, thetay , /key InitVar, hits , /key InitVar, sunsky , /key InitVar, sunflat , /key InitVar, suntime , /key InitVar, sunsecs , /key InitVar, sunhits , /key InitVar, fullsky , /key InitVar, fullflat , /key InitVar, badpixels , /key InitVar, map_types , /key ; At most one of the keywords should be set key = [ equatraw ,northraw ,southraw , $ ; Hires maps equatcnt ,northcnt ,southcnt , $ equatflat ,northflat ,southflat , $ equatstars,northstars,southstars, $ ; Lores maps dirtysky,orbtime,psfn,psfe,badsky,badhtm,thetax,thetay,orbsecs,fovx,hits, $ badpixels , $ sunsky , sunflat , suntime, sunsecs, sunhits, $ fullsky, fullflat] ; key = -1 probably means we are making a combo map key = (where(key))[0] map_type = ['sky','equ','ecl','sid'] exten_nrs =[[ 0 , 0 , -1 , 0 ] , $ ; equatraw [ 1 , 1 , -1 , 1 ] , $ ; northraw [ 2 , 2 , -1 , 2 ] , $ ; southraw [ 3 , -1 , -1 , 0 ] , $ ; equatcnt [ 4 , -1 , -1 , 0 ] , $ ; northcnt [ 5 , -1 , -1 , 0 ] , $ ; southcnt [-1 , 3 , -1 , 0 ] , $ ; equatflat [-1 , 4 , -1 , 0 ] , $ ; northflat [-1 , 5 , -1 , 0 ] , $ ; southflat [-1 , 6 , -1 , 0 ] , $ ; equatstars [-1 , 7 , -1 , 0 ] , $ ; northstars [-1 , 8 , -1 , 0 ] , $ ; southstars [ 6 , -1 , -1 , 0 ] , $ ; dirtysky [ 7 , 9 , 7 , 0 ] , $ ; orbtime [ 8 , 13 , -1 , 0 ] , $ ; psfn [ 9 , -1 , -1 , 0 ] , $ ; psfe [10 , -1 , -1 , 0 ] , $ ; badsky [11 , -1 , -1 , 0 ] , $ ; badhtm [12 , -1 , -1 , 0 ] , $ ; thetax [13 , -1 , -1 , 0 ] , $ ; thetay [14 , 10 , 8 , 0 ] , $ ; orbsecs [15 , 11 , -1 , 0 ] , $ ; fovx [16 , 12 , 9 , 0 ] , $ ; hits [17 , -1 , -1 , 0 ] , $ ; badpixels [-1 , -1 , 0 , 0 ] , $ ; sunsky [-1 , -1 , 1 , 0 ] , $ ; sunflat [-1 , -1 , 2 , 0 ] , $ ; suntime [-1 , -1 , 3 , 0 ] , $ ; sunsecs [-1 , -1 , 4 , 0 ] , $ ; sunhits [-1 , -1 , 5 , 0 ] , $ ; fullsky [-1 , -1 , 6 , 0 ] ] ; fullflat CASE 1 OF IsType(files,/defined): BEGIN tmp = smei_filename(files,mode=mode) CASE 1 OF IsType(exten_no,/defined): BEGIN SyncArgs, files, exten_no CASE 1 OF hires_map: BEGIN ; Hires maps? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: val[j] = 0 LE exten_no[j] AND exten_no[j] LE 5 1: val[j] = 0 LE exten_no[j] AND exten_no[j] LE 8 2: ; No hires maps in ecl maps 3: val[j] = 0 LE exten_no[j] AND exten_no[j] LE 2 ENDCASE ENDIF ENDFOR END lores_map: BEGIN ; Lores maps? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: val[j] = 6 LE exten_no[j] AND exten_no[j] LE 16 1: val[j] = 9 LE exten_no[j] AND exten_no[j] LE 13 2: val[j] = 5 LE exten_no[j] AND exten_no[j] LE 9 3: ; No lores maps in sid map ENDCASE ENDIF ENDFOR END eclsun_map: BEGIN ; Eclsun maps? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: ; No eclsun maps in sky maps 1: ; No eclsun maps in equ maps 2: val[j] = 0 LE exten_no[j] AND exten_no[j] LE 4 3: ; No eclsun maps in sid map ENDCASE ENDIF ENDFOR END frame_map: BEGIN ; CCD frames? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: val[j] = exten_no[j] EQ 17 1: ; No CCD frames in equ maps 2: ; No CCD frames in ecl maps 3: ; No CCD frames in sid map ENDCASE ENDIF ENDFOR END adus_map: BEGIN ; Brightness maps? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: val[j] = exten_no[j] EQ 0 OR exten_no[j] EQ 1 OR exten_no[j] EQ 2 OR $ exten_no[j] EQ 6 OR exten_no[j] EQ 10 1: val[j] = exten_no[j] EQ 0 OR exten_no[j] EQ 1 OR exten_no[j] EQ 2 OR $ exten_no[j] EQ 3 OR exten_no[j] EQ 4 OR exten_no[j] EQ 5 OR $ exten_no[j] EQ 6 OR exten_no[j] EQ 7 OR exten_no[j] EQ 8 2: val[j] = exten_no[j] EQ 0 OR exten_no[j] EQ 1 OR $ exten_no[j] EQ 5 OR exten_no[j] EQ 6 3: val[j] = exten_no[j] EQ 0 OR exten_no[j] EQ 1 OR exten_no[j] EQ 2 ENDCASE ENDIF ENDFOR END angle_map: BEGIN ; Maps containing angles? 0=No, 1=Yes val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN BEGIN CASE i OF 0: val[j] = exten_no[j] EQ 8 OR exten_no[j] EQ 9 OR $ exten_no[j] EQ 12 OR exten_no[j] EQ 13 OR $ exten_no[j] EQ 15 1: val[j] = exten_no[j] EQ 11 OR exten_no[j] EQ 13 2: ; No angle maps in ecl files 3: ; No angle maps in sid map ENDCASE ENDIF ENDFOR END cvsmei_mode: BEGIN ; Array [maptype,exten_no] vals = [['eqmap', 'eqmap', 'eclsun', 'eqmap'] , $ ['npmap', 'npmap', 'eclsun', 'npmap'] , $ ['spmap', 'spmap', 'eclsun', 'spmap'] , $ ['eqmap', 'eqmap', 'eclsun', '' ] , $ ['npmap', 'npmap', 'eclsun', '' ] , $ ['spmap', 'spmap', 'lores' , '' ] , $ ['lores', 'eqmap', 'lores' , '' ] , $ ['lores', 'npmap', 'lores' , '' ] , $ ['lores', 'spmap', 'lores' , '' ] , $ ['lores', 'lores', 'lores' , '' ] , $ ['lores', 'lores', '' , '' ] , $ ['lores', 'lores', '' , '' ] , $ ['lores', 'lores', '' , '' ] , $ ['lores', 'lores', '' , '' ] , $ ['lores', '' , '' , '' ] , $ ['lores', '' , '' , '' ] , $ ['lores', '' , '' , '' ] , $ ['' , '' , '' ,'' ] ] val = replicate('',n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i] AND 0 LE exten_no AND exten_no LT smei_sky_field(count=map_type[i])) IF j[0] NE -1 THEN val[j] = vals[i,exten_no[j]] ; 'eqfull' refers to a hires map with RA=[0,360],DEC=[-90,90] j = where(mode EQ map_type[i] AND (exten_no LT 0 OR exten_no GE smei_sky_field(count=map_type[i]))) IF j[0] NE -1 THEN val[j] = 'eqfull' ENDFOR END ENDCASE END ; 'files' specified but no 'exten_no' IsType(count,/defined): BEGIN ; Number of extensions val = replicate(0,n_elements(files)) FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN val[j] = smei_sky_field(count=map_type[i]) ENDFOR END ELSE: BEGIN ; Translate keys to extension numbers val = replicate(-1,n_elements(files)) IF key NE -1 THEN BEGIN FOR i=0,n_elements(map_type)-1 DO BEGIN j = where(mode EQ map_type[i]) IF j[0] NE -1 THEN val[j] = exten_nrs[i,key] ENDFOR ENDIF END ENDCASE SyncDims, val, size=size(files) END ; No 'files' specified; only keyword hires_map: BEGIN CASE key EQ -1 OF 0: val = ([1,1,1, 1,1,1, 1,1,1, 1,1,1, 0,0,0,0,0,0,0,0,0,0,0, 0, 0,0,0,0,0, 0,0])[key] 1: val = 0 ENDCASE END lores_map: BEGIN CASE key EQ -1 OF 0: val = ([0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1,1, 0, 0,0,0,0,0, 1,1])[key] 1: val = 0 ENDCASE END eclsun_map: BEGIN CASE key EQ -1 OF 0: val = ([0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0,0,0,0,0,0,0,0,0, 0, 1,1,1,1,1, 0,0])[key] 1: val = 0 ENDCASE END frame_map: BEGIN CASE key EQ -1 OF 0: val = ([0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0,0,0,0,0,0,0,0,0, 1, 0,0,0,0,0, 0,0])[key] 1: val = 0 ENDCASE END adus_map: BEGIN CASE key EQ -1 OF 0: val = ([1,1,1, 0,0,0, 1,1,1, 1,1,1, 1,0,0,0,1,0,0,0,0,0,0, 0, 1,1,0,0,0, 1,1])[key] 1: val = 0 ENDCASE END angle_map: BEGIN CASE key EQ -1 OF 0: val = ([0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,1,1,0,0,1,1,0,1,0, 0, 0,0,0,0,0, 0,0])[key] 1: val = 0 ENDCASE END cvsmei_mode: BEGIN CASE key EQ -1 OF 0: val = ( ['eqmap','npmap','spmap', $ 'eqmap','npmap','spmap', $ 'eqmap','npmap','spmap', $ 'eqmap','npmap','spmap', $ 'lores','lores','lores','lores','lores','lores','lores','lores','lores','lores','lores', $ '' , $ 'eclsun','eclsun','eclsun','eclsun','eclsun', $ 'lores' ,'lores' ])[key] 1: val = '' ENDCASE END IsType(count,/defined): val = max( exten_nrs[(where(map_type EQ count))[0],*] )+1 map_types: val = map_type IsType(droplist,/defined): BEGIN CASE droplist OF 'sky': val = [ $ 'Equator', 'North Pole', 'South Pole', $ 'Equ Cnt', 'North Cnt', 'South Cnt', $ 'LA Sky' , 'Orbit Time','PSFN Rot','PSFE Rot', $ 'Bad Sky', 'Bad HTM','Theta-X','Theta-Y', $ 'Orbit Secs','FOV-X','Hits','Bad Pix', $ 'Combo Map'] 'equ': val = [ $ 'Equator' , 'North Pole' , 'South Pole' , $ 'Equ Flat' , 'North Flat' , 'South Flat' , $ 'Equ Stars', 'North Stars', 'South Stars', $ 'Orbit Time','Orbit Secs' ,'FOV-X', 'Hits',$ 'PSFN Rot' , $ 'Combo Map' ] 'ecl': val = [ $ 'Sun Full-Sky' , 'Sun Full-Flat', $ 'Sun Orbit Time', 'Sun Orbit Secs','Sun Hits', $ 'Equ Full-Sky' , 'Equ Full-Flat', $ 'Equ Orbit Time', 'Equ Orbit Secs','Equ Hits'] 'zod': val = ['Combo Map'] 'sid': val = ['Equator', 'North Pole', 'South Pole', 'Combo Map'] ENDCASE END ENDCASE RETURN, val & END