;+ ; Contains the make_dir_tab function ; and defines the dirs class ; ; :Author: ; Baptiste Cecconi, Gaƫlle Boisnard ; ; :History: ; 2009/01/19: Created ; ; 2012/04/25: Last Edit ;- ; PRO DIRS__DEFINE void = {dirs, name:'', year1:0 ,doy1:0 ,year2:0 ,doy2:0} end ;+ ; Creates the list of the directories names (yyyy_ddb_dde or Turn_on...) ; ; :Returns: ; <return desc here> ; ; :Params: ; year1: in, required, type=sometype ; year of start of period ; ddday1: in, required, type=sometype ; day of start of period ; year2: in, required, type=sometype ; year of end of period ; ddday2: in, required, type=sometype ; day of end of period ; ; :Keywords: ; verbose: in, optional, type=sometype ; A keyword named verbose ;- FUNCTION make_dir_tab, year1, ddday1, year2, ddday2,verbose = verbose if keyword_set(verbose) then verbose = 1b else verbose = 0b if verbose then message,string(format='("Building directory list for ",I4,"/",I3.3,"->",I4,"/",I3.3)',year1,ddday1, year2, ddday2),/info ;----------------------------------------------------- ; building dirs data for pre 2000 directories n_dirs_pre_2000 = 6 dirs_pre_2000 = replicate({dirs},n_dirs_pre_2000) dirs_pre_2000.name = ['Turn_on', 'Venus1', 'Ico_m14', 'Ico_m14', 'Venus2', 'Earth'] dirs_pre_2000.year1 = [1997, 1998, 1998, 1999, 1999, 1999] dirs_pre_2000.doy1 = [298, 116, 364, 1, 175, 227 ] dirs_pre_2000.year2 = [1997, 1998, 1998, 1999, 1999, 1999] dirs_pre_2000.doy2 = [299, 116, 365, 5, 175, 257 ] ;----------------------------------------------------- ; building dirs data for post 2000 directories dir_ext = strarr(4) dir_ext[0] = '_001_090' dir_ext[1] = '_091_180' dir_ext[2] = '_181_270' dir_ext[3] = '_271_366' dirnames = [''] n_dirs_post_2000 = 4 dirs_post_2000 = replicate({dirs},n_dirs_post_2000) dirs_post_2000.name = dir_ext dirs_post_2000.doy1 = [1, 91, 181, 271] dirs_post_2000.doy2 = [90, 180, 270, 366] ;----------------------------------------------------- if year1 eq year2 then begin ;----------------------------------------------------- if (year1 lt 2000) then begin for idir=0,n_dirs_pre_2000-1 do begin if ( (year1 eq dirs_pre_2000(idir).year1) and $ (ddday1 le dirs_pre_2000(idir).doy2) and $ (ddday2 ge dirs_pre_2000(idir).doy1) ) $ then begin if verbose then message,'Adding '+dirs_pre_2000(idir).name+'/ to directory list',/info dirnames=[dirnames, dirs_pre_2000(idir).name] endif endfor endif else begin dirs_year1 = dirs_post_2000 dirs_year1.name = string(format='(I4)',year1)+dirs_year1.name dirs_year1.year1 = year1 dirs_year1.year2 = year1 for idir=0,3 do begin if ( (ddday1 le dirs_year1(idir).doy2) and $ (ddday2 ge dirs_year1(idir).doy1) ) $ then begin if verbose then message,'Adding '+dirs_year1(idir).name+'/ to directory list',/info dirnames=[dirnames, dirs_year1(idir).name] endif endfor endelse ;----------------------------------------------------- endif else begin ;----------------------------------------------------- if (year1 lt 2000) then begin if ( (year1 eq 1997) ) then begin if verbose then message,'Adding Turn_on/ to directory list',/info dirnames=[dirnames, 'Turn_on'] endif if ( ( (year1 lt 1998) or ( (year1 eq 1998) and (ddday1 le 116) ) ) and $ ( (year2 gt 1998) or ( (year2 eq 1998) and (ddday2 ge 116) ) ) ) then begin if verbose then message,'Adding Venus1/ to directory list',/info dirnames=[dirnames, 'Venus1'] endif if ( ( (year1 lt 1999) or ( (year1 eq 1999) and (ddday1 le 5) ) ) and $ ( (year2 gt 1998) or ( (year2 eq 1998) and (ddday2 ge 364) ) ) ) then begin if verbose then message,'Adding Ico_m14/ to directory list',/info dirnames=[dirnames, 'Ico_m14'] endif if ( ( (year1 lt 1999) or ( (year1 eq 1999) and (ddday1 le 175) ) ) and $ ( (year2 gt 1999) or ( (year2 eq 1999) and (ddday2 ge 175) ) ) ) then begin if verbose then message,'Adding Venus2/ to directory list',/info dirnames=[dirnames, 'Venus2'] endif if ( ( (year1 lt 1999) or ( (year1 eq 1999) and (ddday1 le 257) ) ) and $ ( (year2 gt 1999) or ( (year2 eq 1999) and (ddday2 ge 227) ) ) ) then begin if verbose then message,'Adding Earth/ to directory list',/info dirnames=[dirnames, 'Earth'] endif year=2000 endif else begin if (ddday1 le 90) then begin if verbose then message,'Adding '+strmid(string(year1), 3, /reverse_offset)+dir_ext[0]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year1), 3, /reverse_offset)+dir_ext[0]] endif if (ddday1 le 180) then begin if verbose then message,'Adding '+strmid(string(year1), 3, /reverse_offset)+dir_ext[1]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year1), 3, /reverse_offset)+dir_ext[1]] endif if (ddday1 le 270) then begin if verbose then message,'Adding '+strmid(string(year1), 3, /reverse_offset)+dir_ext[2]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year1), 3, /reverse_offset)+dir_ext[2]] endif if verbose then message,'Adding '+strmid(string(year1), 3, /reverse_offset)+dir_ext[3]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year1), 3, /reverse_offset)+dir_ext[3]] year=year1+1 endelse if (year2 ge 2000) then begin while (year lt year2) do begin if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[0]+'/ to directory list',/info if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[1]+'/ to directory list',/info if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[2]+'/ to directory list',/info if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[3]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[0]] dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[1]] dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[2]] dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[3]] year=year+1 endwhile if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[0]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[0]] if (ddday2 gt 90) then begin if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[1]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year),3, /reverse_offset)+dir_ext[1]] if (ddday2 gt 180) then begin if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[2]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[2]] if (ddday2 gt 270) then begin if verbose then message,'Adding '+strmid(string(year), 3, /reverse_offset)+dir_ext[3]+'/ to directory list',/info dirnames=[dirnames, strmid(string(year), 3, /reverse_offset)+dir_ext[3]] endif endif endif endif ;----------------------------------------------------- endelse ;----------------------------------------------------- if (n_elements(dirnames) eq 1) then begin pdirnames=ptr_new() endif else begin dirnames=dirnames(1:*) ndirs = n_elements(dirnames) dir_check = strarr(ndirs) for idir=0,ndirs-1 do dir_check(idir)=(strsplit(dirnames(idir),'/',/extract))(0) pdirnames=ptr_new(dirnames) endelse return, pdirnames end