;+ ; Contains the load_data_n3ed procedure ; ; :Author: ; Baptiste Cecconi ; ; :History: ; 2009/02/23: Created ; ; V2.0 : added n1, n2, n3d, n3e output. ; ; V2.1 : added FI and FF keywords ; ; 2009/02/23: Last Edit ;- ; ;+ ; load_data_n3ed is a procedure that <behavior desc here> ; ; :Params: ; yyyydddb: in, required, type=sometype ; A parameter named yyyydddb ; hhb: in, required, type=sometype ; A parameter named hhb ; yyyyddde: in, required, type=sometype ; A parameter named yyyyddde ; hhe: in, required, type=sometype ; A parameter named hhe ; n1: in, required, type=sometype ; A parameter named n1 ; n2: in, required, type=sometype ; A parameter named n2 ; n3d: in, required, type=sometype ; A parameter named n3d ; n3e: in, required, type=sometype ; A parameter named n3e ; ; :Keywords: ; verbose: in, optional, type=sometype ; A keyword named verbose ; source: in, optional, type=sometype ; A keyword named source ; FI: in, optional, type=sometype ; A keyword named FI ; FF: in, optional, type=sometype ; A keyword named FF ;- PRO load_data_n3ed,yyyydddb,hhb,yyyyddde,hhe,n1,n2,n3d,n3e, $ verbose=verbose, source=source, FI=FI, FF=FF if keyword_set(verbose) then verbose = 1b else verbose = 0b if keyword_set(FI) then begin select_fi=1b if verbose then message,/info,'Selecting data with FI='+string(FI) endif else begin select_fi=0b if keyword_set(FF) then begin select_ff=1b if verbose then message,/info,'Selecting data with FF='+string(FF)+' kHz' endif else select_ff=0b endelse ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='n1') if (ptr_valid(ptrDataFileList) eq 0) then begin n_n1DataFile=0 if keyword_set(verbose) then print,"# Warning ! No N1 data file selected..." endif else begin n1DataFileList=*ptrDataFileList n_n1DataFile = n_elements(n1DataFileList) ptr_free,ptrDataFileList endelse ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='n2') if (ptr_valid(ptrDataFileList) eq 0) then begin n_n2DataFile=0 if keyword_set(verbose) then print,"# Warning ! No N2 data file selected..." endif else begin n2DataFileList=*ptrDataFileList n_n2DataFile = n_elements(n2DataFileList) ptr_free,ptrDataFileList endelse ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='n3d', source=source, antset='d') if (ptr_valid(ptrDataFileList) eq 0) then begin n_n3dDataFile=0 if keyword_set(verbose) then print,"# Warning ! No N3d data file selected..." endif else begin n3dDataFileList=*ptrDataFileList n_n3dDataFile = n_elements(n3dDataFileList) ptr_free,ptrDataFileList endelse ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='n3e', source=source, antset='d') if (ptr_valid(ptrDataFileList) eq 0) then begin n_n3eDataFile=0 if keyword_set(verbose) then print,"# Warning ! No N3e data file selected..." endif else begin n3eDataFileList=*ptrDataFileList n_n3eDataFile = n_elements(n3eDataFileList) ptr_free,ptrDataFileList endelse nn = 0l for i=0l,n_n3dDataFile-1l do begin ndata=1l read_data_binary,n3dDataFileList(i),ndata,/ndata,level='n3e' nn = nn+ndata endfor if nn ne 0l then begin if verbose then message,/info,'Creating data structures ('+string(nn)+' elements)' n1 = replicate({data_n1},nn) n2 = replicate({data_n2},nn) n3d = replicate({data_n3d},nn) n3e = replicate({data_n3e},nn) ii0 = 0l for i=0l,n_n3dDataFile-1l do begin while strmid(n3dDataFileList(i),9,/rev) ne strmid(n2DataFileList(i),9,/rev) do begin if i eq 0 then n2DataFileList=n2DataFileList(1:*) else $ n2DataFileList=[n2DataFileList(0:i-1),n2DataFileList(i+1:*)] n_n2DataFile = n_n2DataFile-1 endwhile if verbose then message,/info,'-------------------------------------------------------------------' if verbose then message,/info,'Reading N1 file: '+n2DataFileList(i) read_data_binary,n1DataFileList(i),n1t,level='n1' if verbose then message,/info,'Reading N2 file: '+n2DataFileList(i) read_data_binary,n2DataFileList(i),n2t,level='n2' if verbose then message,/info,'Reading N3d file: '+n3dDataFileList(i) read_data_binary,n3dDataFileList(i),n3dt,level='n3d' if verbose then message,/info,'Reading N3e file: '+n3eDataFileList(i) read_data_binary,n3eDataFileList(i),n3et,valid,level='n3e' if verbose then message,/info,'merging...' if valid then begin nnt = n_elements(n3dt) n1t = n1t(n3dt.num) n2t = n2t(n3dt.num) ww = lindgen(nnt) & cnt = nnt if select_fi then ww = where(n1t.fi eq fi,cnt) if select_ff then ww = where(n2t.f eq ff,cnt) if verbose then message,/info,'Data selected : '+strtrim(string(cnt),2)+'/'+strtrim(string(nnt),2)+' ('+strtrim(string(format='(F6.2)',float(cnt)/float(nnt)*100.),2)+'%)' if cnt ne 0 then begin ii1 = ii0 + cnt n1(ii0:ii1-1) = n1t(ww) n2(ii0:ii1-1) = n2t(ww) n3d(ii0:ii1-1) = n3dt(ww) n3e(ii0:ii1-1) = n3et(ww) ii0 = ii1 endif endif endfor endif else begin if verbose then message,/info,'No data for the selected period' n1={data_n1} n2={data_n2} n3d={data_n3d} n3e={data_n3e} endelse if select_fi or select_ff then begin if ii0 eq 0 then begin if verbose then message,/info,'No data for the selected period' n1={data_n1} n2={data_n2} n3d={data_n3d} n3e={data_n3e} endif else begin n1 = n1(0:ii1-1) n2 = n2(0:ii1-1) n3d = n3d(0:ii1-1) n3e = n3e(0:ii1-1) endelse endif return end