;+ ; FUNCTION get_scan_struc_arr ; ; :Description: ; Obtain a structure storing SD data sorted by scan. Usually this function is ; used by the other routines. ; ; :EXAMPLES: ; dat = get_scan_struc_arr( 'sd_hok_vlos_1' ) ; ; :Author: ; Tomo Hori (E-mail: horit at stelab.nagoya-u.ac.jp) ; ; :HISTORY: ; 2011/07/01: Initial release ; ; $LastChangedBy: jwl $ ; $LastChangedDate: 2014-02-10 16:54:11 -0800 (Mon, 10 Feb 2014) $ ; $LastChangedRevision: 14265 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/projects/erg/ground/radar/superdarn/get_scan_struc_arr.pro $; ;- FUNCTION get_scan_struc_arr, vn ;Check the argument npar = n_params() if npar ne 1 then return, 0 vn = vn[0] ;only 1st element is processed below if (tnames(vn))[0] eq '' then return,0 get_data, vn, data=d vartime = d.x & var = d.y if (size(var))[0] ne 2 then return, 0 ;Strings consisting of vn prefix = strmid(vn, 0,7) suf = strmid(vn, 0,1,/reverse) azmno_vn = prefix+'azim_no_'+suf scanno_vn = prefix+'scanno_'+suf get_data, azmno_vn, data=d azmno = d.y get_data, scanno_vn, data=d scanno = d.y scan = scanno[uniq(scanno)] azmno_sorted = azmno[sort(azmno)] azm = azmno_sorted[uniq(azmno_sorted)] azmmax = n_elements(azm) nrang = n_elements(var[0,*]) ;Create a 2-D scan array and its time array vararr = fltarr( n_elements(scan), nrang, azmmax ) timearr = dblarr(n_elements(scan)) beamtarr = dblarr(n_elements(scan), 2) nbeamarr = intarr(n_elements(scan)) vararr[*] = !values.f_nan ;Store data into the 2-D scan array for i=0L, n_elements(scan)-1 do begin tscan = scan[i] idx = where(scanno eq tscan) if idx[0] ne -1 then begin timearr[i] = mean( vartime[idx] ) ;Time label is the average for tplot drawing beamt = minmax( vartime[idx] ) beamtarr[i,*] = transpose( [ beamt[0], beamt[1] ] ) ; Start and end time of each scan tazmno = azmno[idx] nbeamarr[i] = n_elements(tazmno) tvar = transpose(var[idx,*]) for j=0, n_elements(tazmno)-1 do begin az = tazmno[j] if az lt 0 and az ge azmmax then continue ;beam number is invalid! vararr[i,*,az] = reform( tvar[*, j], 1,nrang,1) ;debugging ;if (i mod 100) eq 0 then print, tscan,tazmno[(sort(tazmno))[j]] endfor endif endfor return, {x:timearr, y:vararr, beamt:beamtarr, nbeam:nbeamarr } end