;----------------------
;
; pro mvn_lpw_pkt_adr
;
;----------------------
;
; Start to the process to get the data into physical units
; note mvn_lpw_atr needs to be read before this one (ATR should always be created before ADR on start up)
; first varibles from only ADR is derived
; at the end variables using ADR and ATR is derived
;
; the some of the ADR parameters is provided as raw and unit_converted (per discussion with David Meyer)
;
;----------------------
; contains routines/procedures:
; mvn_lpw_pkt_adr
;----------------------
; KEYWORDS
; tplot_var = 'all' or 'sci' => 'sci' produces tplot variables with physical units associated with them and is the default
; => 'all' produces all tplot variables
;----------------------
;example
; to run
; mvn_lpw_pkt_adr,output,lpw_const,tplot_var
;----------------------
; history:
; original file atc_check made by Corinne Vannatta
; This is based on the existing file on 17 August 2011
; last change: 2013 July 11th, Chris Fowler - IF statement added to check for data.
; 11/11/13 L. Andersson clean the routine up and change limit/dlimit to fit the CDF labels introduced dy and dv, might need to be disable...
;
;----------------------
;
;*******************************************************************
pro mvn_lpw_pkt_adr, output,lpw_const,tplot_var=tplot_var
If keyword_set(tplot_var) THEN tplot_var = tplot_var ELSE tplot_var = 'sci' ;Default setting is science tplot variables only.
IF output.p8 GT 0 THEN BEGIN ;check we have data
;--------------------- 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
filename_L0=output.filename
;---------
const_active_steps=lpw_const.nn_active_steps ; the last point is omitted, do not contain importnat information
nn_steps=lpw_const.nn_swp_steps ; nn_steps number of input in the table note the wvalues is 128-1 because 1 point the instrument wait for everything to setle
nn_steps2=lpw_const.nn_swp ;true number of steps
nn_pktnum=lpw_const.nn_modes
const_sign = lpw_const.sign
const_lp_bias1_DAC=lpw_const.lp_bias1_DAC
const_w_bias1_DAC=lpw_const.w_bias1_DAC
const_lp_guard1_DAC=lpw_const.lp_guard1_DAC
const_w_guard1_DAC=lpw_const.w_guard1_DAC
const_lp_stub1_DAC=lpw_const.lp_stub1_DAC
const_w_stub1_DAC=lpw_const.w_stub1_DAC
const_lp_bias2_DAC=lpw_const.lp_bias2_DAC
const_w_bias2_DAC=lpw_const.w_bias2_DAC
const_lp_guard2_DAC=lpw_const.lp_guard2_DAC
const_w_guard2_DAC=lpw_const.w_guard2_DAC
const_lp_stub2_DAC=lpw_const.lp_stub2_DAC
const_w_stub2_DAC=lpw_const.w_stub2_DAC
const_bias1_readback=lpw_const.bias1_readback
const_guard1_readback=lpw_const.guard1_readback
const_stub1_readback=lpw_const.stub1_readback
const_V1_readback =lpw_const.V1_readback
const_bias2_readback=lpw_const.bias2_readback
const_guard2_readback=lpw_const.guard2_readback
const_stub2_readback=lpw_const.stub2_readback
const_V2_readback =lpw_const.V2_readback
;--------------------------------------------------------------------
nn_pktnum = output.p8 ; number of data packages
time = double(output.SC_CLK1(output.adr_i))+output.SC_CLK2(output.adr_i)/2l^16 +t_epoch
;---------------------------------------------
;------------- Checks ---------------------
if output.p8 NE n_elements(output.adr_DYN_OFFSET1) then stanna
;-----------------------------------------
;---------- variable: LP_BIAS1 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum,nn_steps) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum,nn_steps) , $ ; same size as y
'v', fltarr(nn_pktnum,nn_steps) , $ ; same size as y
'dv', fltarr(nn_pktnum,nn_steps) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = output.adr_lp_bias1
for i=0,nn_pktnum-1 do data.v(i,*)=indgen(nn_steps)
data.dy=1
data.dv=1
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[bins]', $
'cal_v_const1' , 'PKT level::' , $ ; 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]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'Adr_lp_bias1' ,$
'yrange' , [min(data.v),max(data.v)] ,$
'ystyle' , 1. ,$
'ztitle' , 'Z-title' ,$
'zrange' , [min(data.y),max(data.y)],$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_lp_bias1_raw',data=data,limit=limit,dlimit=dlimit
;------------------ Converted ---------------------------
dlimit.zsubtitle='[readback]'
data.y = data.y*const_bias1_readback
limit.zrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_lp_bias1',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------- variable: LP_BIAS2 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum,nn_steps) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum,nn_steps) , $ ; same size as y
'v', fltarr(nn_pktnum,nn_steps) , $ ; same size as y
'dv', fltarr(nn_pktnum,nn_steps) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = output.adr_lp_bias2
for i=0,nn_pktnum-1 do data.v(i,*)=indgen(nn_steps)
data.dy=1
data.dv=1
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[Bin]', $
'cal_v_const1' , 'PKT level::', $ ; 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]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'ADR_lp_bias2' ,$
'yrange' , [min(data.v),max(data.v)],$
'ystyle' , 1. ,$
'zrange' , [min(data.y),max(data.y)],$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_lp_bias2_raw',data=data,limit=limit,dlimit=dlimit
;---------------- Converted --------------------
dlimit.zsubtitle='[readback]'
dlimit.cal_y_const1='PKT level:' + strcompress(const_bias2_readback,/remove_all)
data.y = data.y*const_bias2_readback
limit.zrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_lp_bias2',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------- variable: offset1 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = output.adr_dyn_offset1
data.dy=1
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[Raw]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'ADR_dyn_offset1' ,$
'yrange' , [min(data.y),max(data.y)] ,$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_dyn_offset1_raw',data=data,limit=limit,dlimit=dlimit
;---------------- Converted --------------------
dlimit.ysubtitle='DAC [V]'
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_bias1_DAC,/remove_all)
data.y = (data.y-const_sign)*const_lp_bias1_DAC
limit.yrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_dyn_offset1',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------- variable: offset2 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = output.adr_dyn_offset2
data.dy=1
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[RAW]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'ADR_dyn_offset2' ,$
'yrange' , [min(data.y),max(data.y)] ,$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_dyn_offset2_raw',data=data,limit=limit,dlimit=dlimit
;---------------- Converted --------------------
dlimit.ysubtitle='DAC [V]'
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_bias2_DAC,/remove_all)
data.y = (data.y-const_sign)*const_lp_bias2_DAC
limit.yrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_dyn_offset2',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;------------- variable: surface_pot1 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum,6) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum,6) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y(*,0)=output.adr_w_bias1
data.y(*,1)=output.adr_w_guard1
data.y(*,2)=output.adr_w_stub1
data.y(*,3)=output.adr_w_v1
data.y(*,4)=output.adr_lp_guard1
data.y(*,5)=output.adr_lp_stub1
str1=['ADR_W_BIAS1','ADR_W_GUARD1','ADR_W_STUB1','ADR_W_V1' ,'ADR_LP_GUARD1','ADR_LP_STUB1']
data.dy(*,0:5)=0
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[Raw]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'Different potentials 1' ,$
'yrange' , [min(data.y),max(data.y)],$
'ystyle' , 1. ,$
'labels' , str1 ,$
'colors' , [1,2,3,4,5,6] ,$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_surface_pot1_raw',data=data,limit=limit,dlimit=dlimit
;---------------- Converted --------------------
dlimit.ysubtitle='readback [V]'
dlimit.cal_y_const1='PKT level:' + strcompress(const_bias1_readback,/remove_all) + ' # ' + $
strcompress(const_guard1_readback,/remove_all) + ' # ' + $
strcompress(const_stub1_readback,/remove_all) + ' # ' + $
strcompress(const_V1_readback,/remove_all) + ' # ' + $
strcompress(const_guard1_readback,/remove_all) + ' # ' + $
strcompress(const_stub1_readback,/remove_all)
data.y(*,0)=data.y(*,0)*const_bias1_readback ;output.adr_w_bias1*c
data.y(*,1)=data.y(*,1)*const_guard1_readback ;output.adr_w_guard1*C
data.y(*,2)=data.y(*,2)*const_stub1_readback ;output.adr_w_stub1*C
data.y(*,3)=data.y(*,3)*const_V1_readback ;output.adr_w_v1*const_V1_readback
data.y(*,4)=data.y(*,4)*const_guard1_readback ;output.adr_lp_guard1*c
data.y(*,5)=data.y(*,5)*const_stub1_readback ;output.adr_lp_stub1*c
limit.yrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_surface_pot1',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;------------- variable: surface_pot2 RAW + Converted ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum,6) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(nn_pktnum,6) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y(*,0)=output.adr_w_bias2
data.y(*,1)=output.adr_w_guard2
data.y(*,2)=output.adr_w_stub2
data.y(*,3)=output.adr_w_v2
data.y(*,4)=output.adr_lp_guard2
data.y(*,5)=output.adr_lp_stub2
str1=['ADR_W_BIAS2','ADR_W_GUARD2','ADR_W_STUB2','ADR_W_V2' ,'ADR_LP_GUARD2','ADR_LP_STUB2']
data.dy(*,0:5)=0
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[Raw]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'Different potentials 2' ,$
'yrange' , [min(data.y),max(data.y)] ,$
'ystyle' , 1. ,$
'labels' , str1 ,$
'colors' , [1,2,3,4,5,6] ,$
'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 --------------------
;------------- RAW ----------
IF tplot_var EQ 'all' THEN store_data,'mvn_lpw_adr_surface_pot2_raw',data=data,limit=limit,dlimit=dlimit
;---------------- Converted --------------------
dlimit.ysubtitle='readback [V]'
dlimit.cal_y_const1='PKT level:' + strcompress(const_bias2_readback,/remove_all) + ' # ' + $
strcompress(const_guard2_readback,/remove_all) + ' # ' + $
strcompress(const_stub2_readback,/remove_all) + ' # ' + $
strcompress(const_V2_readback,/remove_all) + ' # ' + $
strcompress(const_guard2_readback,/remove_all) + ' # ' + $
strcompress(const_stub2_readback,/remove_all)
data.y(*,0)=data.y(*,0)*const_bias2_readback ;output.adr_w_bias2*c
data.y(*,1)=data.y(*,1)*const_guard2_readback ;output.adr_w_guard2*C
data.y(*,2)=data.y(*,2)*const_stub2_readback ;output.adr_w_stub2*C
data.y(*,3)=data.y(*,3)*const_V2_readback ;output.adr_w_v2*constV21_readback
data.y(*,4)=data.y(*,4)*const_guard2_readback ;output.adr_lp_guard2*c
data.y(*,5)=data.y(*,5)*const_stub2_readback ;output.adr_lp_stub2*c
limit.yrange=[min(data.y),max(data.y)]
store_data,'mvn_lpw_adr_surface_pot2',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
IF tplot_var EQ 'all' THEN BEGIN
;------------- variable: smp_avg ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = 2^(output.smp_avg(output.adr_i)+1) ;from table 7.6 2^(smp_avg+1)
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'ADR_smp_avg' ,$
'yrange' , [0,max(data.y)*1.2] ,$
'ystyle' , 1. ,$
'ylog' , 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_adr_smp_avg',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
ENDIF
IF tplot_var EQ 'all' THEN BEGIN
;------------- variable: adr_mode ---------------------------
data = create_struct( $
'x', dblarr(nn_pktnum) , $ ; double 1-D arr
'y', fltarr(nn_pktnum) ) ;1-D
;-------------- derive time/variable ----------------
data.x = time
data.y = output.ORB_MD(output.adr_i)
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR', $
'xsubtitle' , '[sec]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'ADR_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_adr_mode',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
ENDIF
;*******************************************************************************************
;*************** Second half where ADR is compared with ATR *************************
;*******************************************************************************************
;adr is always after atr, hence match to a atr before this time stamp
IF tplot_var EQ 'all' THEN BEGIN
;-------------- Set up the fundamental so Expected ATR can be derived (12 different values is created below)----------------
;------------------------------ This is will then be compared to ADR_raw*const ----------------------------------------------
;---------------------------------- The time is based on the ATR time stamp ----------------------------------------------
;---- To get the ADR time-stamp I expect the ATR(data0) packet first for the matching ADR(data1) packet ------------
get_data,'mvn_lpw_atr_dac',data=data0 ; this is what we based it on
get_data,'mvn_lpw_adr_surface_pot1_raw',data=data1 ;data1.y(*,3)=output.adr_w_v1
;-------------
data = create_struct( $
'x', dblarr(n_elements(data0.x)) , $ ; double 1-D arr
'y', fltarr(n_elements(data0.x)) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(n_elements(data0.x)) ) ;1-D
;-------------- derive time/variable ----------------
data.x = data0.x
;data.y = ; will be different for all 12 variables ;this will change below
data.dy=-1
;-------------------------------------------
;--------------- dlimit ------------------
dlimit=create_struct( $
'generated_date' , today_date+' # '+t_routine, $
't_epoch' , t_epoch, $
'L0_datafile' , filename_L0 , $
'cal_vers' , cal_ver ,$
'cal_y_const1' , 'PKT level:' , $ ; 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: ADR and ATR', $
'xsubtitle' , '[sec]', $
'ysubtitle' , '[DAC [V?]]')
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'expect_ATR_X' ,$
'yrange' , [min(data.y),max(data.y)] ,$
'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 --------------------
;-------------
;---------------- Create 10 of the 12 variables ----------------------
;---------------- mvn_lpw_expect_ATR_bias1_wave --------------------
;mvn_lpw_atr_dac: data0.y(*,0)=output.ATR_W_BIAS1(i)
get_data,'mvn_lpw_atr_dac',data=data0 ; this is what we based it on
get_data,'mvn_lpw_adr_surface_pot1_raw',data=data1 ;data1.y(*,3)=output.adr_w_v1
sort_data1=fltarr(n_elements(data0.x)) ;DO I HAVE TO DO THIS ON ALL VARIABLES BELOW?
for i=0,n_elements(data0.x)-1 do BEGIN
qq=min(abs( (data0.x(i)-data1.x) +1e9*(data0.x(i)-data1.x LT 0)),nq) ;find the right ADR(data1) match to the ATR(data0) time
sort_data1(i)=nq
; print,i,nq,data0.x(i)-data1.x(nq),' EE ',(data0.x(i)-data1.x)
endfor
dlimit.cal_y_const1='PKT level:' + strcompress(const_w_bias1_DAC,/remove_all) +' # '+ $
strcompress(const_V1_readback,/remove_all)
data.y = (data0.y(*,0)-const_sign)*const_w_bias1_DAC +(data1.y(sort_data1,3)*const_V1_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_bias1_wave'
store_data,'mvn_lpw_exp_ATR_bias1_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_guard1_wave --------------------
;mvn_lpw_atr_dac: data0.y(i,1)=output.ATR_W_GUARD1(i)
get_data,'mvn_lpw_adr_surface_pot1_raw',data=data1 ;data1.y(*,3)=output.adr_w_v1
dlimit.cal_y_const1='PKT level:' + strcompress(const_w_guard1_DAC,/remove_all) +' # '+ $
strcompress(const_V1_readback,/remove_all)
data.y = (data0.y(*,1)-const_sign)*const_w_guard1_DAC +(data1.y(sort_data1,3)*const_V1_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_guard1_wave'
store_data,'mvn_lpw_exp_ATR_guard1_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_stub1_wave --------------------
;mvn_lpw_atr_dac: data0.y(i,2)=output.ATR_W_STUB1(i)
get_data,'mvn_lpw_adr_surface_pot1_raw',data=data1 ;data1.y(*,3)=output.adr_w_v1
data.y = (data0.y(*,2)-const_sign)*const_w_stub1_DAC +(data1.y(sort_data1,3)*const_V1_readback)
limit.yrange=[-5,5] ;[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_stub1_wave'
store_data,'mvn_lpw_exp_ATR_stub1_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_bias2_wave --------------------
;mvn_lpw_atr_dac: data0.y(*,6)=output.ATR_W_BIAS2(i)
get_data,'mvn_lpw_adr_surface_pot2_raw',data=data1 ;data1.y(*,3)=output.adr_w_v2
dlimit.cal_y_const1='PKT level:' + strcompress(const_w_bias2_DAC,/remove_all) +' # '+ $
strcompress(const_V2_readback,/remove_all)
data.y = (data0.y(*,6)-const_sign)*const_w_bias2_DAC +(data1.y(sort_data1,3)*const_V2_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_bias2_wave'
store_data,'mvn_lpw_exp_ATR_bias2_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_guard2_wave --------------------
;mvn_lpw_atr_dac: data0.y(i,7)=output.ATR_W_GUARD2(i)
get_data,'mvn_lpw_adr_surface_pot2_raw',data=data1 ;data1.y(*,3)=output.adr_w_v2
dlimit.cal_y_const1='PKT level:' + strcompress(const_w_guard2_DAC,/remove_all) +' # '+ $
strcompress(const_V2_readback,/remove_all)
data.y = (data0.y(*,7)-const_sign)*const_w_guard2_DAC +(data1.y(sort_data1,3)*const_V2_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_guard2_wave'
store_data,'mvn_lpw_exp_ATR_guard2_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_stub2_wave --------------------
;mvn_lpw_atr_dac: data0.y(i,8)=output.ATR_W_STUB2(i)
get_data,'mvn_lpw_adr_surface_pot2_raw',data=data1 ;data1.y(*,3)=output.adr_w_v2
dlimit.cal_y_const1='PKT level:' + strcompress(const_w_stub2_DAC,/remove_all) +' # '+ $
strcompress(const_V2_readback,/remove_all)
data.y = (data0.y(*,8)-const_sign)*const_w_stub2_DAC +(data1.y(sort_data1,3)*const_V2_readback)
limit.yrange=[-5,5] ;[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_stub2_wave'
store_data,'mvn_lpw_exp_ATR_stub2_wave',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_bias1_LP moved down since this will be 128 of them --------------------
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_guard1_LP --------------------
;mvn_lpw_atr_dac: data0.y(i,4)=output.ATR_LP_GUARD1(i)
get_data,'mvn_lpw_adr_lp_bias1_raw',data=data1 ;data1.y(*,127)=output.adr_lp_bias1(*,127)
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_guard1_DAC,/remove_all) +' # '+ $
strcompress(const_bias1_readback,/remove_all)
data.y = (data0.y(*,4)-const_sign)*const_lp_guard1_DAC +(data1.y(sort_data1,126)*const_bias1_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_guard1_LP'
store_data,'mvn_lpw_exp_ATR_guard1_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_stub1_LP --------------------
;mvn_lpw_atr_dac: data0.y(i,5)=output.ATR_LP_STUB1(i)
get_data,'mvn_lpw_adr_lp_bias1_raw',data=data1 ;data1.y(*,127)=output.adr_lp_bias1(*,127)
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_stub1_DAC,/remove_all) +' # '+ $
strcompress(const_bias1_readback,/remove_all)
data.y = (data0.y(*,5)-const_sign)*const_lp_stub1_DAC +(data1.y(sort_data1,126)*const_bias1_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_stub1_LP'
store_data,'mvn_lpw_exp_ATR_stub1_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_bias2_LP moved down since this will be 128 of them --------------------
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_guard12_LP --------------------
;mvn_lpw_atr_dac: data0.y(i,10)=output.ATR_LP_GUARD2(i)
get_data,'mvn_lpw_adr_lp_bias2_raw',data=data1 ;data1.y(*,127)=output.adr_lp_bias2(*,127)
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_guard2_DAC,/remove_all) +' # '+ $
strcompress(const_bias2_readback,/remove_all)
data.y = (data0.y(*,10)-const_sign)*const_lp_guard2_DAC +(data1.y(sort_data1,126)*const_bias2_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_guard2_LP'
store_data,'mvn_lpw_exp_ATR_guard2_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_stub2_LP --------------------
;mvn_lpw_atr_dac: data0.y(i,11)=output.ATR_LP_STUB2(i)
get_data,'mvn_lpw_adr_lp_bias2_raw',data=data1 ;data1.y(*,127)=output.adr_lp_bias2(*,127)
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_stub2_DAC,/remove_all) +' # '+ $
strcompress(const_bias2_readback,/remove_all)
data.y = (data0.y(*,11)-const_sign)*const_lp_stub2_DAC +(data1.y(sort_data1,126)*const_bias2_readback)
limit.yrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_stub2_LP'
store_data,'mvn_lpw_exp_ATR_stub2_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- Create the last 2 of the 12 variables ----------------------
;;LP
;---------------- mvn_lpw_expect_ATR_bias1_LP 128 of them --------------------
data = create_struct( $
'x', dblarr(n_elements(data0.x)) , $ ; double 1-D arr
'y', fltarr(n_elements(data0.x),nn_steps2) , $ ; most of the time float and 1-D or 2-D
'dy', fltarr(n_elements(data0.x),nn_steps2) , $ ; same size as y
'v', fltarr(n_elements(data0.x),nn_steps2) , $ ; same size as y
'dv', fltarr(n_elements(data0.x),nn_steps2) ) ;1-D
;-------------- derive time/variable ----------------
;mvn_lpw_atr_dac: data0.y(*,3)=output.ATR_LP_BIAS1(i)
get_data,'mvn_lpw_atr_swp',data=data1 ;data1.y(i,*)=(output.ATR_SWP(i,*) - const_sign) *const_DAC_volt ; not unique to boom 1 or boom 2
data.x=data0.x ;(sort_data0)
print,'#################'
sort_data1=fltarr(n_elements(data0.x))
for i=0,n_elements(data0.x)-1 do BEGIN
qq=min(abs( (data0.x(i)-data1.x) +1e9*(data0.x(i)-data1.x LT 0)),nq) ;find the right ADR(data1) match to the ATR(data0) time
sort_data1(i)=nq
; print,i,nq,data0.x(i)-data1.x(nq),' EE ',(data0.x(i)-data1.x)
endfor
for i=0,n_elements(data0.x)-1 do begin
;change to
;where Func(TBD) is first ATR packet that has the applicable orbital mode in the tertiary header
data.y(i,*) =(data0.y(i,3)-const_sign)*const_lp_bias1_DAC+data1.y(sort_data1(i),*) + 0. ;the '0' is because this is grounded
data.v(i,*)=data1.v(sort_data1(i),*)
data.dy(i,*)=-1
data.dv(i,*)=-1
endfor
;-------------------------------------------
;
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_bias1_DAC,/remove_all)
;------------- limit ----------------
limit=create_struct( $
'char_size' , 1.2 ,$
'xtitle' , 'Time' ,$
'ytitle' , 'expected_ATR_bias1_LP' ,$
'yrange' , [min(data.v),max(data.v)] ,$
'ystyle' , 1. ,$
'ztitle' , 'Points' ,$
'zrange' , [min(data.y),max(data.y)],$
'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_exp_ATR_bias1_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
;---------------- mvn_lpw_expect_ATR_bias2_LP 128 of them --------------------
;mvn_lpw_atr_dac: data0.y(*,9)=output.ATR_LP_BIAS2(i)
dlimit.cal_y_const1='PKT level:' + strcompress(const_lp_bias2_DAC,/remove_all) ;
for i=0,n_elements(data0.x)-1 do begin
data.y(i,*) =(data0.y(i,9)-const_sign)*const_lp_bias2_DAC+data1.y(sort_data1(i),*) + 0. ;the '0' is because this is grounded
data.dy(i,*)=-1
endfor
limit.zrange=[min(data.y),max(data.y)]
limit.ytitle='expected_ATR_bias2_LP'
store_data,'mvn_lpw_exp_ATR_bias2_LP',data=data,limit=limit,dlimit=dlimit
;---------------------------------------------
ENDIF
ENDIF
IF output.p8 LE 0 THEN print, "mvn_lpw_adr.pro skipped as no packets found."
end
;*******************************************************************