;;+
;PROCEDURE:   mvn_lpw_pkt_atr
;PURPOSE:
;  Takes the decumuted data (L0) from the ATR packet, Active Table Read back
;  and turn it the data into tplot structures
;  NOTE mvn_lpw_pkt_atr needs to be read before mvn_lpw_pkt_adr
; ATR packet will only be provided as raw values expect for the
; sweep values that is derived into units of Volt
;
;USAGE:
;  mvn_lpw_pkt_atr,output,lpw_const,cdf_istp_lpw,tplot_var
;
;INPUTS:
;       output:         L0 data
;       lpw_const:      information of lpw calibration etc
;       cdf_istp_lpw:   information for CDF production
;
;KEYWORDS:
;       tplot_var   'ALL' or 'sci'  'sci' produces tplot variables that have physical units associated with them.
;                                   'ALL' produces all tplot variables.
;  spice = '/directory/of/spice/=> 1 if SPICE is installed. SPICE is then used to get correct clock times.
;                 => 0 is SPICE is not installed. S/C time is used.
;
;CREATED BY:   Laila Andersson 17 august 2011
;FILE: mvn_lpw_pkt_atr.pro
;VERSION:   2.0  <------------------------------- update 'pkt_ver' variable
;LAST MODIFICATION:
;07/11/13 - Chris Fowler - added IF statement checking for data in output.p6, and keyword tplot_var.
;05/16/13
;11/11/13 L. Andersson clean the routine up and change limit/dlimit to fit the CDF labels, since this is a read back of tables no dv or dy information exist
; 04/15/14 L. Andersson included L1
;18/04/14 L. Andersson major changes to meet the CDF requirement and allow time to come from spice, added verson number in dlimit, changed version number
;;140718 clean up for check out L. Andersson
;2014-10-03: CF: edited dlimit fields for ISTP compliance.
;2014-10-03:LA: change too the new bias/stub calibration from from seperate files
;-

pro mvn_lpw_pkt_atr,output,lpw_const,tplot_var=tplot_var,spice=spice


  IF output.p6 GT 0 THEN BEGIN  ;check we have data

    ;-------------------Check different inputs------------------------------------
    If keyword_set(tplot_var) THEN tplot_var = tplot_var ELSE tplot_var = 'sci'  ;Default setting is science tplot variables only.
    ;--------------------------------------------------------------------


    ;--------------------- Constants Used In This Routine  ------------------------------------
    t_routine        =SYSTIME(0)
    t_epoch          =lpw_const.t_epoch
    today_date       =lpw_const.today_date
    cal_ver          =lpw_const.version_calib_routine
    pkt_ver          = 'Pkt_atr_ver V2.0 '
    cdf_istp         =lpw_const.cdf_istp_lpw
    filename_L0      =output.filename
    ;---------
    nn_swp=lpw_const.nn_swp
    nn_dac=lpw_const.nn_dac
    ;--------------------------------------------------------------------
    mvn_lpw_cal_read_bias,bias_arr,bias_file
    mvn_lpw_cal_read_guard,guard_arr,guard_file   ;><<<<<<< not working yet!!!!!
    mvn_lpw_cal_read_stub,stub_arr,stub_file
    ;----------  variable: --------------------
    nn_pktnum=output.p6                               ; number of data packages
    ;-----------------------------------------

    ;------------- Checks ---------------------
    if output.p6 NE n_elements(output.atr_i) then stanna
    if n_elements(output.atr_i) EQ 0 then print,'(mvn_lpw_atr) No packages where found <---------------'
    ;-----------------------------------------

    ;-------------------- Get correct clock time ------------------------------
    time_sc = double(output.SC_CLK1[output.atr_i]+output.SC_CLK2[output.atr_i]/2l^16)+t_epoch  ;data points in s/c time
    IF keyword_set(spice)  THEN BEGIN                                                                                                ;if this computer has SPICE installed:
      aa = output.SC_CLK1[output.atr_i]
      bb = output.SC_CLK2[output.atr_i]
      mvn_lpw_anc_clocks_spice, aa, bb,clock_field_str,clock_start_t,clock_end_t,spice,spice_used,str_xtitle,kernel_version,time  ;correct times using SPICE
    ENDIF ELSE BEGIN
      clock_field_str  =  ['Spacecraft Clock ', 's/c time seconds from 1970-01-01/00:00']
      time             = time_sc                                                                                            ;data points in s/c time
      clock_start_t    = [time_sc[0]-t_epoch,          time_sc[0]]                         ;corresponding start times to above string array, s/c time
      clock_end_t      = [time_sc[nn_pktnum-1]-t_epoch,time_sc[nn_pktnum-1]] ;corresponding end times, s/c time
      spice_used       = 'SPICE not used'
      str_xtitle       = 'Time (s/c)'
      kernel_version    = 'N/A'
    ENDELSE
    ;--------------------------------------------------------------------



    ;------------- variable:  atr_swp_table ---------------------------
    data =  create_struct(   $
      'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
      'y',    fltarr(nn_pktnum,nn_swp) ,  $     ; most of the time float and 1-D or 2-D
      'v',    fltarr(nn_pktnum,nn_swp)  )     ;1-D
    ;-------------- derive  time/variable ----------------
    data.x = time
    for i=0,nn_pktnum-1 do begin
      data.y[i,*]=bias_arr[output.ATR_SWP[i,*],1]
      data.v[i,*]=indgen(nn_swp)
    endfor
    ;-------------------------------------------
    ;--------------- dlimit   ------------------
    dlimit=create_struct(   $
      'Product_name',                  'ATR sweep', $
      'Project',                       cdf_istp[12], $
      'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
      'Discipline',                    cdf_istp[1], $
      'Instrument_type',               cdf_istp[2], $
      'Data_type',                     cdf_istp[3], $
      'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
      'Descriptor',                    cdf_istp[5], $
      'PI_name',                       cdf_istp[6], $
      'PI_affiliation',                cdf_istp[7], $
      'TEXT',                          cdf_istp[8], $
      'Mission_group',                 cdf_istp[9], $
      'Generated_by',                  cdf_istp[10],  $
      'Generation_date',                today_date+' # '+t_routine, $
      'Rules of use',                  cdf_istp[11], $
      'Acknowledgement',               cdf_istp[13],   $
      'MONOTON', 'INCREASE', $
      'SCALEMIN', min(data.v,/nan)+1, $
      'SCALEMAX', max(data.v,/nan)+1, $        ;..end of required for cdf production.
      't_epoch'         ,     t_epoch, $
      'Time_start'      ,     clock_start_t, $
      'Time_end'        ,     clock_end_t, $
      'Time_field'      ,     clock_field_str, $
      'SPICE_kernel_version', kernel_version, $
      'SPICE_kernel_flag'      ,     spice_used, $
      'L0_datafile'     ,     filename_L0 , $
      'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
      'cal_y_const1'    ,     'Used: ' +bias_file+ 'used boom 1 cal' ,$  ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
      ;'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
      ;'cal_datafile'    ,     'No calibration file used' , $
      'cal_source'      ,     'Information from PKT: ATR', $
      'xsubtitle'       ,     '[sec]', $
      'ysubtitle'       ,     '[bin number]', $
      'cal_v_const1'    ,     'Used: Step no',$; Fixed convert information from measured binary values to physical units, variables from ground testing and design
      ;'cal_v_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
      'zsubtitle'       ,     '[V]')
    ;-------------  limit ----------------
    limit=create_struct(   $
      'char_size' ,     1.2                      ,$
      'xtitle' ,        str_xtitle                   ,$
      'ytitle' ,        'ATR_sweep'                 ,$
      'yrange' ,        [min(data.v,/nan),max(data.v,/nan)]+1 ,$
      'ystyle'  ,       1.                       ,$
      'ylog'   ,        0.                       ,$
      'ztitle' ,        'Bias swep [V]'                ,$
      'zrange' ,        [min(data.y,/nan),max(data.y,/nan)] +1,$
      'zlog'   ,        0.                       ,$
      'spec'   ,        1.                       ,$
      'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
      'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
      'xlim2'    ,      [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
    ;------------- store --------------------
    store_data,'mvn_lpw_atr_swp',data=data,limit=limit,dlimit=dlimit
    ;---------------------------------------------


    IF tplot_var EQ 'ALL' THEN BEGIN
      ;------------- variable:  atr_swp_table_raw ---------------------------
      data =  create_struct(     $
        'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
        'y',    fltarr(nn_pktnum,nn_swp) ,  $     ; most of the time float and 1-D or 2-D
        'v',    fltarr(nn_pktnum,nn_swp) )
      ;-------------- derive  time/variable ----------------
      data.x = time
      for i=0,nn_pktnum-1 do begin
        data.y[i,*]=output.ATR_SWP[i,*]   ;raw data
        data.v[i,*]=indgen(nn_swp)
      endfor
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'ATR sweep RAW', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     'RAW>Raw' ,  $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'MONOTON', 'INCREASE', $
        'SCALEMIN', min(data.v,/nan)+1, $
        'SCALEMAX', max(data.v,/nan)+1, $        ;..end of required for cdf production.
        't_epoch'         ,     t_epoch, $
        'Time_start'      ,     clock_start_t, $
        'Time_end'        ,     clock_end_t, $
        'Time_field'      ,     clock_field_str, $
        'SPICE_kernel_version', kernel_version, $
        'SPICE_kernel_flag'      ,     spice_used, $
        'L0_datafile'     ,     filename_L0 , $
        'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
        'cal_y_const1'    ,     'Used: NaN' ,$  ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ;                   'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        ;  'cal_datafile'    ,     'No calibration file used' , $
        'cal_source'      ,     'Information from PKT: ATR', $
        'xsubtitle'       ,     '[sec]', $
        'ysubtitle'       ,     '[bin number]', $
        'cal_v_const1'    ,     'Used: Step no' ,$ ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ;'cal_v_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        'zsubtitle'       ,     '[raw value]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'char_size' ,     1.2                      ,$
        'xtitle' ,        str_xtitle                   ,$
        'ytitle' ,        'ATR_sweep'                 ,$
        'yrange' ,        [min(data.v,/nan),max(data.v,/nan)]+1  ,$
        'ystyle'  ,       1.                       ,$
        'ztitle' ,        'Bias swep [RAW]'               ,$
        'zrange' ,        [min(data.y,/nan),max(data.y,/nan)]+1,$
        'spec'            ,     1, $
        'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
        'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
        'xlim2'    ,      [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_swp_raw',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------
    ENDIF


    IF tplot_var EQ 'ALL' THEN BEGIN
      ;------------- variable:  atr_dac_table ---------------------------
      data =  create_struct(     $
        'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
        'y',    fltarr(nn_pktnum,nn_dac) ,  $     ; most of the time float and 1-D or 2-D
        'v',    fltarr(nn_pktnum,nn_dac) )     ;1-D
      ;-------------- derive  time/variable ----------------
      data.x = time
      for i=0,nn_pktnum-1 do begin
        data.y[i,0]=output.ATR_W_BIAS1[i]
        data.y[i,1]=output.ATR_W_GUARD1[i]
        data.y[i,2]=output.ATR_W_STUB1[i]
        data.y[i,3]=output.ATR_LP_BIAS1[i]
        data.y[i,4]=output.ATR_LP_GUARD1[i]
        data.y[i,5]=output.ATR_LP_STUB1[i]
        data.y[i,6]=output.ATR_W_BIAS2[i]
        data.y[i,7]=output.ATR_W_GUARD2[i]
        data.y[i,8]=output.ATR_W_STUB2[i]
        data.y[i,9]=output.ATR_LP_BIAS2[i]
        data.y[i,10]=output.ATR_LP_GUARD2[i]
        data.y[i,11]=output.ATR_LP_STUB2[i]
        data.v[i,*]=indgen(nn_dac)
      endfor
      str1= ['W_BIAS1','W_GUARD1','W_STUB1','LP_BIAS1','LP_GUARD1','LP_STUB1', $
        'W_BIAS2','W_GUARD2','W_STUB2','LP_BIAS2','LP_GUARD2','LP_STUB2']
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'ATR dac', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     'RAW>raw', $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'MONOTON', 'INCREASE', $
        'SCALEMIN', 0., $
        'SCALEMAX', 12., $        ;..end of required for cdf production.
        't_epoch'         ,     t_epoch, $
        'Time_start'      ,     clock_start_t, $
        'Time_end'        ,     clock_end_t, $
        'Time_field'      ,     clock_field_str, $
        'SPICE_kernel_version', kernel_version, $
        'SPICE_kernel_flag'      ,     spice_used, $
        'L0_datafile'     ,     filename_L0 , $
        'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
        'cal_y_const1'    ,     'Used: NAN' ,$  ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ;'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        ;'cal_datafile'    ,     'No calibration file used' , $
        'cal_source'      ,     'Information from PKT: ATR', $
        'xsubtitle'       ,     '[sec]', $
        'ysubtitle'       ,     '[RAW]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'char_size' ,     1.2                      ,$
        'xtitle' ,        str_xtitle                   ,$
        'ytitle' ,        'ATR_DAC_table'          ,$
        'yrange' ,        [0,4096]                   ,$
        'ystyle'  ,       1.                       ,$
        'labels' ,        str1                     ,$
        'labflag' ,       1                        ,$
        'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
        'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
        'xlim2'    ,    [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_dac_raw',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------


      ;------------- variable:  atr_dac_table ---------------------------
      data =  create_struct(     $
        'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
        'y',    fltarr(nn_pktnum,nn_dac) ,  $     ; most of the time float and 1-D or 2-D
        'v',    fltarr(nn_pktnum,nn_dac) )     ;1-D
      ;-------------- derive  time/variable ----------------
      data.x = time
      for i=0,nn_pktnum-1 do begin
        data.y[i,0]=bias_arr[output.ATR_W_BIAS1[i] < 4095,1]
        data.y[i,1]=guard_arr[output.ATR_W_GUARD1[i]< 4095,1]
        data.y[i,2]=stub_arr[output.ATR_W_STUB1[i]< 4095,1]
        data.y[i,3]=bias_arr[output.ATR_LP_BIAS1[i]< 4095,1]
        data.y[i,4]=guard_arr[output.ATR_LP_GUARD1[i]< 4095,1]
        data.y[i,5]=stub_arr[output.ATR_LP_STUB1[i]< 4095,1]
        data.y[i,6]=bias_arr[output.ATR_W_BIAS2[i]< 4095,2]
        data.y[i,7]=guard_arr[output.ATR_W_GUARD2[i]< 4095,2]
        data.y[i,8]=stub_arr[output.ATR_W_STUB2[i]< 4095,2]
        data.y[i,9]=bias_arr[output.ATR_LP_BIAS2[i]< 4095,2]
        data.y[i,10]=guard_arr[output.ATR_LP_GUARD2[i]< 4095,2]
        data.y[i,11]=stub_arr[output.ATR_LP_STUB2[i]< 4095,2]
        data.v[i,*]=indgen(nn_dac)
      endfor
      str1= ['W_BIAS1','W_GUARD1','W_STUB1','LP_BIAS1','LP_GUARD1','LP_STUB1', $
        'W_BIAS2','W_GUARD2','W_STUB2','LP_BIAS2','LP_GUARD2','LP_STUB2']
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'ATR dac', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     'RAW>raw', $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'MONOTON', 'INCREASE', $
        'SCALEMIN', 0., $
        'SCALEMAX', 12., $        ;..end of required for cdf production.
        't_epoch'         ,     t_epoch, $
        'Time_start'      ,     clock_start_t, $
        'Time_end'        ,     clock_end_t, $
        'Time_field'      ,     clock_field_str, $
        'SPICE_kernel_version', kernel_version, $
        'SPICE_kernel_flag'      ,     spice_used, $
        'L0_datafile'     ,     filename_L0 , $
        'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
        'cal_y_const1'    ,     'Used:' +bias_file+' # '+guard_file+' # '+stub_file ,$  ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ;'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        ;'cal_datafile'    ,     'No calibration file used' , $
        'cal_source'      ,     'Information from PKT: ATR', $
        'xsubtitle'       ,     '[sec]', $
        'ysubtitle'       ,     '[Not yet complete V]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'char_size' ,     1.2                      ,$
        'xtitle' ,        str_xtitle                   ,$
        'ytitle' ,        'ATR_DAC_table'          ,$
        'yrange' ,        [min(data.y),max(data.y)]                   ,$
        'ystyle'  ,       1.                       ,$
        'labels' ,        str1                     ,$
        'labflag' ,       1                        ,$
        'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
        'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
        'xlim2'    ,      [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_dac',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------

    ENDIF

    IF tplot_var EQ 'ALL' THEN BEGIN
      ;------------- variable:  rpt_rate ---------------------------
      data =  create_struct(   $
        'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
        'y',    fltarr(nn_pktnum))    ; same size as y
      ;-------------- derive  time/variable ----------------
      data.x=time
      data.y=2^(output.smp_avg[output.atr_i]+1)       ; from table 7.1.1 2^(rpt_rate_dummy+1) * MCU
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'ATR rpt rate', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     cdf_istp[3], $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'MONOTON', 'INCREASE', $
        'SCALEMIN', 0., $
        'SCALEMAX', max(data.y)*1.2, $        ;..end of required for cdf production.
        't_epoch'         ,     t_epoch, $
        'Time_start'      ,     clock_start_t, $
        'Time_end'        ,     clock_end_t, $
        'Time_field'      ,     clock_field_str, $
        'SPICE_kernel_version', kernel_version, $
        'SPICE_kernel_flag'      ,     spice_used, $
        'L0_datafile'     ,     filename_L0 , $
        'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
        'cal_y_const1'    ,     'Used : MCU=1' ,$  ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ; 'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        ; 'cal_datafile'    ,     'No calibration file used' , $
        'cal_source'      ,     'Information from PKT: ATR', $
        'xsubtitle'       ,     '[sec]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'char_size' ,     1.2                      ,$
        'xtitle' ,        str_xtitle                   ,$
        'ytitle' ,        'atr_rpt_rate * MCU'                 ,$
        'yrange' ,        [0,max(data.y)*1.2] ,$
        'ystyle'  ,       1.                       ,$
        'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
        'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
        'xlim2'    ,      [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_rpt_rate',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------
    ENDIF

    IF tplot_var EQ 'ALL' THEN BEGIN
      ;------------- variable:  atr_mode ---------------------------
      data =  create_struct(  $
        'x',    dblarr(nn_pktnum) ,  $     ; double 1-D arr
        'y',    fltarr(nn_pktnum)  )
      ;-------------- derive  time/variable ----------------
      data.x = time
      data.y = output.ORB_MD[output.atr_i]
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'ATR mode', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     cdf_istp[3], $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'MONOTON', 'INCREASE', $
        'SCALEMIN', -1, $
        'SCALEMAX', 18, $        ;..end of required for cdf production.
        't_epoch'         ,     t_epoch, $
        'Time_start'      ,     clock_start_t, $
        'Time_end'        ,     clock_end_t, $
        'Time_field'      ,     clock_field_str, $
        'SPICE_kernel_version', kernel_version, $
        'SPICE_kernel_flag'      ,     spice_used, $
        'L0_datafile'     ,     filename_L0 , $
        'cal_vers'        ,     cal_ver+' # '+pkt_ver ,$
        'cal_y_const1'    ,     'Used :'  ,$ ; Fixed convert information from measured binary values to physical units, variables from ground testing and design
        ; 'cal_y_const2'    ,     'Used :'   ; Fixed convert information from measured binary values to physical units, variables from space testing
        ; 'cal_datafile'    ,     'No calibration file used' , $
        'cal_source'      ,     'Information from PKT: ATR', $
        'xsubtitle'       ,     '[sec]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'char_size' ,     1.2                      ,$
        'xtitle' ,        str_xtitle                 ,$
        'ytitle' ,        'ATR_mode'               ,$
        'yrange' ,        [-1,18]                  ,$
        'ystyle'  ,       1.                       ,$
        'xrange2'  ,      [min(data.x),max(data.x)],$           ;for plotting lpw pkt lab data
        'xstyle2'  ,      1                       , $           ;for plotting lpw pkt lab data
        'xlim2'    ,    [min(data.x),max(data.x)])              ;for plotting lpw pkt lab data
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_mode',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------
    ENDIF


    IF tplot_var EQ 'ALL' THEN BEGIN
      ;------------- variable:  ATR L1-raw  ---------------------------
      data =  create_struct(   $
        'x',    dblarr(nn_pktnum) ,  $                           ; double 1-D arr
        'y',    fltarr(nn_pktnum, nn_swp+12+2))                   ;1-D
      ;-------------- derive  time/variable ----------------
      for i=0L,nn_pktnum-1 do begin
        data.x[i]                    = time_sc[i]                          ;sc time only
        data.y[i,0:nn_swp-1]         = output.ATR_SWP[i,*]   ;nn_swp
        data.y[i,nn_swp+00]       = output.ATR_W_BIAS1[i]
        data.y[i,nn_swp+01]       = output.ATR_W_GUARD1[i]
        data.y[i,nn_swp+02]       = output.ATR_W_STUB1[i]
        data.y[i,nn_swp+03]       = output.ATR_LP_BIAS1[i]
        data.y[i,nn_swp+04]       = output.ATR_LP_GUARD1[i]
        data.y[i,nn_swp+05]       = output.ATR_LP_STUB1[i]
        data.y[i,nn_swp+06]       = output.ATR_W_BIAS2[i]
        data.y[i,nn_swp+07]       = output.ATR_W_GUARD2[i]
        data.y[i,nn_swp+08]       = output.ATR_W_STUB2[i]
        data.y[i,nn_swp+09]       = output.ATR_LP_BIAS2[i]
        data.y[i,nn_swp+10]       = output.ATR_LP_GUARD2[i]
        data.y[i,nn_swp+11]       = output.ATR_LP_STUB2[i]
        data.y[i,nn_swp+12]       = 2^(output.smp_avg[output.atr_i[i]]+1)  ; from table 7.1.1 2^(rpt_rate_dummy+1) * MCU
        data.y[i,nn_swp+13]       = output.ORB_MD[output.atr_i[i]]
      endfor
      str1=['adr_lp_swp'+strarr(nn_swp), $
        'W_BIAS1','W_GUARD1','W_STUB1','LP_BIAS1','LP_GUARD1','LP_STUB1', $
        'W_BIAS2','W_GUARD2','W_STUB2','LP_BIAS2','LP_GUARD2','LP_STUB2', $
        'Number of averaged samples','Orbit mode']
      ;-------------------------------------------
      ;--------------- dlimit   ------------------
      dlimit=create_struct(   $
        'Product_name',                  'MAVEN LPW raw L0b ATR data', $
        'Project',                       cdf_istp[12], $
        'Source_name',                   cdf_istp[0], $     ;Required for cdf production...
        'Discipline',                    cdf_istp[1], $
        'Instrument_type',               cdf_istp[2], $
        'Data_type',                     'RAW>raw', $
        'Data_version',                  cdf_istp[4], $  ;Keep this text string, need to add v## when we make the CDF file (done later)
        'Descriptor',                    cdf_istp[5], $
        'PI_name',                       cdf_istp[6], $
        'PI_affiliation',                cdf_istp[7], $
        'TEXT',                          cdf_istp[8], $
        'Mission_group',                 cdf_istp[9], $
        'Generated_by',                  cdf_istp[10],  $
        'Generation_date',                today_date+' # '+t_routine, $
        'Rules of use',                  cdf_istp[11], $
        'Acknowledgement',               cdf_istp[13],   $
        'x_catdesc',                     'Timestamps for each data point, in UNIX time.', $
        'y_catdesc',                     'See labels for individual lines', $    ;
        'x_Var_notes',                   'UNIX time: Number of seconds elapsed since 1970-01-01/00:00:00.', $
        'y_Var_notes',                   'See labels for individual lines', $
        'xFieldnam',                     'x: UNIX time: Number of seconds elapsed since 1970-01-01/00:00:00.', $
        'yFieldnam',                     'y: see labels for individual lines', $
        'derivn',                        'Equation of derivation', $    ;####
        'sig_digits',                    '# sig digits', $ ;#####
        'SI_conversion',                 'Convert to SI units', $  ;####
        'MONOTON',                     'INCREASE', $
        'SCALEMIN',                    min(data.y), $
        'SCALEMAX',                    max(data.y), $
        't_epoch'         ,            t_epoch, $
        'Time_start'      ,            [time_sc[0]-t_epoch,          time_sc[0]] , $
        'Time_end'        ,            [time_sc[nn_pktnum-1]-t_epoch,time_sc[nn_pktnum-1]], $
        'Time_field'      ,            ['Spacecraft Clock ', 's/c time seconds from 1970-01-01/00:00'], $
        'SPICE_kernel_version',        'NaN', $
        'SPICE_kernel_flag'      ,     'SPICE not used', $
        'L0_datafile'     ,            filename_L0 , $
        'cal_source'      ,            'Information from PKT: ATR-raw', $
        'cal_vers'        ,             cal_ver+' # '+pkt_ver ,$
        'xsubtitle'       ,            '[sec]', $
        'ysubtitle'       ,            '[Raw Packet Information]')
      ;-------------  limit ----------------
      limit=create_struct(   $
        'xtitle' ,                      'Time (s/c)'             ,$
        'ytitle' ,                      'Misc'                 ,$
        'labels' ,                      str1                    ,$
        'yrange' ,                      [min(data.y),max(data.y)] )
      ;------------- store --------------------
      store_data,'mvn_lpw_atr_l0b',data=data,limit=limit,dlimit=dlimit
      ;---------------------------------------------

    ENDIF
  ENDIF ELSE print, "mvn_lpw_atr.pro skipped as no packets found."

end
;*******************************************************************