;+ ; NAME: ; rbsp_btrange (procedure) ; ; PURPOSE: ; This routine is to find the starting time and ending time of each ; continuous segment (burst, usually) of a give tplot variable which ; essentially is specified by a tplot name such as 'rbspa_efw_eb2'. ; ; CATEGORIES: ; ; CALLING SEQUENCE: ; rbsp_btrange, tvar, btrange = btrange, nbursts = nbursts, tind = tind, $ ; tlen = tlen, structure = structure ; ; ARGUMENTS: ; tvar: (INPUT, REQUIRED). The name of a tplot variable. If keyword STRUCTURE ; is set, tvar should be a tplot data structure from get_data. ; ; KEYWORDS: ; btrange: (OUTPUT, OPTIONAL) A named variable to return a 2D array as ; [number_of_total_bursts, 2] which stores the the starting time and ; the ending time of each continuous burst. ; nbursts: (OUTPUT, OPTIONAL) A named variable to return the number of ; bursts. ; tind: (OUTPUT, OPTIONAL) A named variable to return a 2D array of the index ; of starting and ending time points with structure ; [[starting],[ending]] ; tlen: (OUTPUT, OPTIONAL) A named variable to return the time lengths of ; all bursts. ; /structure: If set, tvar should be a tplot data structure. ; ; COMMON BLOCKS: ; ; EXAMPLES: ; ; SEE ALSO: ; ; HISTORY: ; 2012-08-23: Created by Jianbao Tao (JBT), SSL, UC Berkley. ; ;- pro rbsp_btrange, tvar, btrange = btrange, nbursts = nbursts, tind = tind, $ tlen = tlen, structure = structure compile_opt idl2 ;check if tvar valid if ~keyword_set(structure) then begin con1 = n_elements(tvar) eq 0 con2 = size(tvar, /type) ne 7 con = con1 + con2 if con gt 0 then begin dprint, 'Invalid tplot name. Returning...' return endif get_data, tvar, data=data if size(data,/type) ne 8 then begin dprint, 'The given tplot name does not contain valid data. Returning...' return endif endif else data = tvar tarr = data.x nt = n_elements(tarr) dtarr = tarr[1:nt-1] - tarr[0:nt-2] dt = median(dtarr) gap = 1.5 * dt bind = where(dtarr gt gap, nbursts) nbursts++ if nbursts gt 1 then begin bstart = [0, bind+1] ; starting index bend = [bind, n_elements(dtarr)] ; ending index endif else begin bstart = [0] bend = [n_elements(dtarr)] endelse ; btrange = dblarr(2,nbursts) ; btrange[0,*] = tarr[bstart] ; btrange[1,*] = tarr[bend] btrange = dblarr(nbursts, 2) btrange[*, 0] = tarr[bstart] btrange[*, 1] = tarr[bend] tind = [[bstart],[bend]] tlen = tarr[tind[*,1]] - tarr[tind[*,0]] end