;+ ; Contains the load_data_n3bi procedure ; ; :Author: ; Baptiste Cecconi ; ; :History: ; 2009/02/23: Created ; ; 2010/10/25: Last Edit ;- ; ;+ ; load_data_n3bi 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 ; n3b: in, required, type=sometype ; A parameter named n3b ; index_n3b: in, required, type=sometype ; A parameter named index_n3b ; ; :Keywords: ; verbose: in, optional, type=sometype ; A keyword named verbose ; source: in, optional, type=sometype ; A keyword named source ; data_path: in, optional, type=sometype ; A keyword named data_path ;- PRO load_data_n3bi,yyyydddb,hhb,yyyyddde,hhe,n1,n2,n3b,index_n3b,$ verbose=verbose, source=source,data_path=data_path ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='n1',verbose=verbose) if (ptr_valid(ptrDataFileList) eq 0) then begin n_n1DataFile=0 if keyword_set(verbose) then message,/info,"# 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='n3b', source=source, antset='d') if (ptr_valid(ptrDataFileList) eq 0) then begin n_n3bDataFile=0 if keyword_set(verbose) then print,"# Warning ! No N3b data file selected..." endif else begin n3bDataFileList=*ptrDataFileList n_n3bDataFile = n_elements(n3bDataFileList) ptr_free,ptrDataFileList endelse if n_n2datafile gt 0 then begin indexbDataFileList = strarr(n_n2DataFile) for ifile=0L,n_n2DataFile-1L do begin str1 = strmid(n2DataFileList(ifile),0,strpos(n2DataFileList(ifile),'n2/P')) str2 = strmid(n2DataFileList(ifile),strpos(n2DataFileList(ifile),'n2/P')+4) indexbDataFileList(ifile) = str1+'index/INDEX_3A_'+str2 endfor ; Period path: data_path=strarr(n_n1datafile) for k=0,n_n1datafile-1l do $ data_path(k) = strmid(n1DataFileList(k),0,strlen(n1DataFileList(k))-14) endif nn = 0l for i=0l,n_n3bDataFile-1l do begin ndata=1l read_data_binary,n3bDataFileList(i),ndata,/ndata,level='n3b' print,ndata nn = nn+ndata endfor nn=2*nn ; size of required data_n3b_flat structure (=2*data_n3b) if nn ne 0l then begin print,'Creating data structures ('+string(nn)+' elements)' n1 = replicate({data_n1},nn) n2 = replicate({data_n2},nn) n3b = replicate({data_n3b_flat},nn) index_n3b = replicate({data_index},nn) ii0 = 0l for i=0l,n_n3bDataFile-1l do begin while strmid(n3bDataFileList(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 print,'-------------------------------------------------------------------' print,'Reading N1 file: '+n1DataFileList(i) read_data_binary,n1DataFileList(i),n1t,level='n1' print,'Reading N2 file: '+n2DataFileList(i) read_data_binary,n2DataFileList(i),n2t,level='n2' print,'Reading N3b file: '+n3bDataFileList(i) read_data_binary,n3bDataFileList(i),n3t,valid,level='n3b' print,'Reading 3-A INDEX file: '+indexbDataFileList(i) read_data_binary,indexbDataFileList(i),indbt,level='index' print,'merging...' if valid then begin ii1 = ii0 +2*n_elements(n3t) print,n_elements(n3t) numt=[n3t.num(0),n3t.num(1)] st=[n3t.s(0),n3t.s(1)] qt=[n3t.q(0),n3t.q(1)] ut=[n3t.u(0),n3t.u(1)] vt=[n3t.v(0),n3t.v(1)] tht=[n3t.th,n3t.th] pht=[n3t.ph,n3t.ph] zrt=[n3t.zr,n3t.zr] sn1t=[n3t.sn(0),n3t.sn(2)] sn2t=[n3t.sn(1),n3t.sn(3)] n3b(ii0:ii1-1).num=numt(sort(numt)) n3b(ii0:ii1-1).s=st(sort(numt)) n3b(ii0:ii1-1).q=qt(sort(numt)) n3b(ii0:ii1-1).u=ut(sort(numt)) n3b(ii0:ii1-1).v=vt(sort(numt)) n3b(ii0:ii1-1).th=tht(sort(numt)) n3b(ii0:ii1-1).ph=pht(sort(numt)) n3b(ii0:ii1-1).zr=zrt(sort(numt)) n3b(ii0:ii1-1).sn(0)=sn1t(sort(numt)) n3b(ii0:ii1-1).sn(1)=sn2t(sort(numt)) n1(ii0:ii1-1) = n1t(numt(sort(numt))) n2(ii0:ii1-1) = n2t(numt(sort(numt))) index_n3b(ii0:ii1-1) = indbt ; index déjà triés dans make_index_files_3A.pro ;numbis=[0] & tmp=numt(sort(numt)) ;for k=0l,n_elements(numt)-1l do begin ; rien=where(indbt.num eq tmp(k)) ; if rien(0) ne -1 then numbis=[numbis,rien] ;endfor ;if numbis(0) ne -1 then numbis=numbis(1:*) ;index_n3b(ii0:ii1-1) = indbt(numbis) ii0 = ii1 endif endfor ; SNR in dB : n3b.sn = 10*alog10(n3b.sn>0.01) endif else begin print,'No data for the selected period' n1={data_n1} n2={data_n2} n3b={data_n3b_flat} index_n3b={data_index} endelse ;w=where(n3b.v eq 0) ;if w(0) ne -1 then begin ; n3b(w).s=0. ; n3b(w).q=0. ; n3b(w).u=0. ; n3b(w).th=0. ; n3b(w).ph=0. ; n3b(w).sn=0. ;endif return end