;+
;NAME:
; thm_crib_efi_cal
;PURPOSE:
; Allows comparison of calibrated, semi-calibrated and raw EFI data
;CALLING SEQUENCE:
; thm_crib_efi_cal, date = date, probe = probe, datatype = datatype, $
;                   trange = trange, /split_components
;INPUT:
; None explicit
;OUTPUT:
; No explicit output, a bunch of tplot variables are created for the
; given probe, date and datatype;for example, for probe='c' and
; datatype='eff', then varibles named: 'tha_eff_raw',
; 'tha_eff_no_edc_offset', 'tha_eff_calfile_edc_offset', and
; 'tha_eff_full' are created.
;  Variable: tha_raw contains raw data
;  Variable: tha_no_edc_offset contains data in physical units --
;             with no EDC offsets subtracted from the spin-plane components E12 and E34.
;  Variable: tha_calfile_edc_offset contains data in physical units -- 
;             with EDC offsets obtained from the calibration file subtracted 
;             from the spin-plane components E12 and E34.
;  Variable: tha_full contains data in physical units -- 
;             with spin-averaged EDC offsets from the spin-plane components E12 and E34.
;KEYWORDS:
; date = the date for the data needed, not used if trange is set. The
;        default is '2010-01-01'
; probe = probe, one of 'a', 'b', 'c','d', 'e'. The default is 'a'.
; datatype = the tye of EFI field data to be used, 'eff', 'efp',
;            'efw'. The default is 'eff'.
; trange = an input time range, will supercede the date keyword
; split_components = if set, then call split_vec on the outputs to
;                    compare individual components
;HISTORY:
; 20-sep-2010, jmm, jimm@ssl.berkeley.edu
; $LastChangedBy: jimm $
; $LastChangedDate: 2010-09-21 11:24:34 -0700 (Tue, 21 Sep 2010) $
; $LastChangedRevision: 7835 $
; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/tags/tdas_8_00/idl/themis/examples/thm_crib_efi_cal.pro $
;-

Pro thm_crib_efi_cal, date = date, probe = probe, datatype = datatype, $
                      split_components = split_components, trange = trange, $
                      _extra = _extra

;Initialize inputs: note minimal error checking is designed to force
;the user to use one datatype at a time and one probe at a time.
;time
  If(keyword_set(trange)) Then Begin
    tr = time_double(trange)
  Endif Else Begin
    If(keyword_set(date)) Then Begin
      tr = time_double(date)+[0.0d0, 86400.0d0]
    Endif Else tr = time_double('2010-01-01')+[0.0d0, 86400.0d0]
  Endelse
;probe
  If(keyword_set(probe)) Then sc = strlowcase(strcompress(/remove_all, probe[0])) $
  Else sc = 'a'
  ok =  where(sc Eq ['a', 'b', 'c', 'd', 'e'], nok)
  If(nok Eq 0) Then Begin
    message, /info, 'Bad probe: mut be one of a, b, c, d, e'
    Return
  Endif
;datatype
  If(keyword_set(datatype)) Then dt = strlowcase(strcompress(/remove_all, datatype[0])) $
  Else dt = 'eff'
  ok = where(dt Eq ['eff', 'efp', 'efw'], nok)
  If(nok Eq 0) Then Begin
    message, /info, 'Bad Datatype: must be one of efs, eff, efw'
    Return
  Endif
;Load data, use suffixes to denote the different stages of data:
  thm_load_efi, probe = sc[0], datatype = dt[0], trange = tr, type = 'raw', suffix = '_raw'
  thm_load_efi, probe = sc[0], datatype = dt[0], trange = tr, /no_edc_offset, suffix = '_no_edc_offset'
  thm_load_efi, probe = sc[0], datatype = dt[0], trange = tr, /calfile_edc_offset, suffix = '_calfile_edc_offset'
;For comparison sake, set the output coordinate system to 'spg'
  thm_load_efi, probe = sc[0], datatype = dt[0], trange = tr, coord = 'spg', suffix = '_full'
;print out an explanation
  thxv = 'th'+sc[0]+'_'+dt[0]
  print, 'Variable: '+thxv+'_raw contains raw data'
  print, 'Variable: '+thxv+'_no_edc_offset contains data in physical units -- '
  print, '           with no EDC offsets subtracted from the spin-plane components E12 and E34.'
  print, 'Variable: '+thxv+'_calfile_edc_offset contains data in physical units -- '
  print, '           with EDC offsets obtained from the calibration file subtracted '
  print, '           from the spin-plane components E12 and E34.'
  print, 'Variable: '+thxv+'_full contains data in physical units -- '
  print, '           with spin-averaged EDC offsets from the spin-plane components E12 and E34.'
  If(keyword_set(split_components)) Then Begin
    split_vec, thxv+'_raw'
    split_vec, thxv+'_no_edc_offset'
    split_vec, thxv+'_calfile_edc_offset'
    split_vec, thxv+'_full'
  Endif

  Return
End