;+
;PROCEDURE: thigh_pass_filter, varname, dt, newname = newname
;PURPOSE:
; Uses high_pass_filter to calculate a running average of the input data and
;   store the data with the running average subtracted in an output tplot variable.
;                   
;INPUT:
; varname = variable passed to get_data, example - thg_mag_ccnv
; dt = the averaging time (in seconds)
;KEYWORDS:
; newname: set output variable name
; no_time_interp:  Set to save memory by preventing interpolation of time
;                  array when smoothing data before subtraction.
;                  This option will probably be significantly slower.
; double:  Set so operation is performed at double precision
;                  regardless of input type. (If input data is double
;                  calculation is always done in double precision)
; interp_resolution = If time interpolation is being used, set this
;                     option to control the number of seconds between
;                     interpolated samples.  The default is to use
;                     the value of the smallest separation between 
;                     samples.  Any number higher than this will sacrifice
;                     output resolution to save memory. (NOTE: This option
;                     will not be applied if no interpolation is being
;                     performed because either (1) no_time_interp is set or
;                     (2) the sample rate of the data is constant)
; 
; interactive_warning = pops up a message box if there are memory problems and asks
;                     the user if they would like to continue
;                     
; warning_result = assign a named variable to this keyword to determine the result of the computation
; 
;HISTORY:
; 14-jan-2008, jmm, jimm@ssl.berkeley.edu
; 06-feb-2008, teq, teq@ssl.berkeley.edu
; 23-Apr-2009, pcruce, pcruce@igpp.ucla.edu, Added extra keyword support
; 28-apr-2008, pcruce, Added interp_resolution option, added memory warning, 
;                        mod to guarantee that precision of output is at least as 
;                        large as precision of input
;$LastChangedBy$
;$LastChangedDate$
;$LastChangedRevision$
;$URL$
;-

Pro thigh_pass_filter, varname, dt, newname = newname,warning_result=warning_result,_extra=ex

  get_data, varname, data = data, dlimits = dlimits, limits = limits
  If(is_struct(data) Eq 0) Then Begin
    message, /info, 'No data in '+varname
  Endif Else Begin
    y1 = high_pass_filter(data.y, data.x, dt,warning_result=warning_result,interactive_varname=varname,_extra=ex)
    str_element, data, 'v', success = ok
    If(ok Eq 0) Then data1 = {x:data.x, y:y1} $
    Else data1 = {x:data.x, y:y1, v:data.v}
    If(keyword_set(newname)) then name2 = newname $
    Else name2 = varname+'_hpfilt'
    store_data, name2, data = data1, dlimits = dlimits, limits = limits
  Endelse
End
