This page was created by the IDL library routine mk_html_help2.

Last modified: Thu Aug 6 12:53:14 2020.


Directory Listing of Routines


Routine Descriptions

MVN_LPW_ANC_BOOM

[Next Routine] [List of Routines]

PURPOSE: determine % of booms and sensors in shadow; sun angle on booms, distance sensors are from wake.

INPUTS:
 - sun_x, sun_y, sun_z are the solar co-ordinates of the Sun (x,y,z) in the MAVEN s/c frame, in km.
                     They can be single numbers or arrays, at double precision for best results.

 - vx, vy, vz are MAVEN velocity vectors in km/s. Can be arrays (double precision required).

 - dlimit and limit are the dlimit and limit structures needed to create the tplot variables.

OUTPUTS:
  Tplot variables:
  mvn_lpw_anc_boom_shadow_orient: 2 lines: the phi and theta angles (in degrees) of the Sun in the MAVEN s/c frame.
  mvn_lpw_anc_boom_shadow: 4 lines: boom1, sensor1, boom2, sensor2, % that is in shadow.
  mvn_lpw_anc_boom_shadow_desc: 2 lines: a number corresponding to the shadow 'form', as described below.
  mvn_lpw_anc_boom_angles: 2 lines: sun angle on the boom1/sensor1, boom2,sensor2, in degrees.

  mvn_lpw_anc_boom_wake_orient :2 lines: the phi and theta angles (in degrees) of the s/c velocity in the MAVEN s/c frame.
  mvn_lpw_anc_boom_wake_d_sc: distance in meters between sensor and geometric wake. (2 lines)
  mvn_lpw_anc_boom_wake: boom is in shadow or not, 1: in wake, 0: out of wake
  mvn_lpw_anc_boom_wake_d_perp: perp distance in meters from sensors to ram vector passing through s/c center.
  mvn_lpw_anc_boom_wake_d_para: para distance in meters from sensors, to ram vector passing through s/c center. +ve value
                                means sensor is in front of s/c wrt motion; -ve values means sensor is behind.
  mvn_lpw_anc_boom_wake_ram_angles: angles between RAM velocity and sensors, in degrees. 2 lines, for per boom.
  
  
 KEYWORDS:
 - flow: optional keyword. This is a 3 element vector containing flow directions of any external flows to MAVEN (for example plasma flow).
                           Speeds are in km/s. If set, this flow is added to the MAVEN s/c vel to  give the overall ram vector. If omitted
                           just MAVEN velocity in MSO is used to determine the RAM velocity.

KEY TO DESCRIPTION FOR SHADOW_DESC:
This is output in the tplot variable mvn_lpw_anc_boom_shadow_desc:

0 : whole boom and sensor in shadow
1 : boom all in shadow, sensor all in sun
2 : boom all in sun, sensor all in shadow
3 : boom partly in shadow from base out, sensor all in sun
4 : boom all in shadow, sensor partly in shadow from base out
5 : boom partly in shadow, not from base out, sensor all in shadow
6 : boom all in sun, sensor partly in shadow, not from base out
7 : boom and sensor all both in sun

For two or more blocks of shadow, there are many different arrangements, so group them all into one number (there aren't many).
For this to happen, there have to be at least two up / down changes for the boom and sensor combined (note that the boom and sensor are
separate so the shadow can change at the boom - to detect this we need to check the value of shadow at last boom point and first sensor point).

8 : two or more blocks of shadow or sun on the boom, sensor in sun
9 : two or more blocks of sun on the sensor, boom in sun
10 : some other combination of multiple shadow spots on the boom and sensor, both neither fully in sun or shadow


Written August 26th 2014 by CF: calculates shadow and wake properties of the two lpw booms.
2014-09-08: CF: fixed bugs: Nans when position info not available now carry through and produce nans for all tplot variables.

(See projects/maven/lpw/mvn_lpw_anc_boom.pro)


MVN_LPW_ANC_BOOM_GET_LUTS

[Previous Routine] [Next Routine] [List of Routines]
Get shadow and wake luts, return them.


KEYWORDS:
 - shadow: set /shadow to return the shaow LUT
 - wake: set /wake to return the wake LUT




MODIFICATIONS:
20150210:CF: modified mvn_lpw_anc_boom_latest_file to grab latest shadow LUT.

(See projects/maven/lpw/mvn_lpw_anc_boom_get_luts.pro)


MVN_LPW_ANC_BOOM_MARS_SHADOW

[Previous Routine] [Next Routine] [List of Routines]


INPUTS:

(See projects/maven/lpw/mvn_lpw_anc_boom_mars_shadow.pro)


MVN_LPW_ANC_CK_SPK_CHECK

[Previous Routine] [Next Routine] [List of Routines]
Give this routine an array of UNIX times; the routine uses SPICE to check whether there is ck and spk coverage for each timestamp.
This function occurs in mvn-lpw-anc-spacecraft, but also occurs with several SPICE calculations. Only the ck/spk checking process
is carried out here (which runs quicker), producing the same tplot variables as those in mvn-lpw-anc-spacecraft. 

The variables produced will have value zero if kernels are present, or 1 if flagged as not present. For 1, SPICE cannot be used to
get spacecraft position / pointing, depending on which kernel is missing (ck = pointing, spk = position).


INPUTS:
unix_in: UNIX double precision array of timetamps. The routine will check SPICE coverage at each timestep.


objcheck: the NAIF object code to be checked for spk (position kernels). -202 is MAVEN, for eg. See 
           https://lasp.colorado.edu/maven/sdc/public/data/anc/spice/fk/maven_v05.tf
           for the full list of MAVEN codes.
 
ckcheck: the NAIF object code to be checked for ck (pointing) kernels. These have three additional integers added to the end
         compared to objcheck. Eg, MAVEN is -202000.           
           
refcheck: the reference frame that objcheck should be checked in. Eg 'MAVEN_MSO'.

   NOTES ON INPUTS: the SPICE coverage routines will only work for frames and objects that are CK based (ie can change over time).
                    each MAVEN object is described in the above weblink, saying whether it's ck based or not. This routine may or may 
                    not work for certain combinations of instruments and frames. CMF hasn't figured out whether this routine can be made 
                    generic or not, however, it should work for MAVEN_SPACECRAFT and MAVEN_MSO.
                

OUTPUTS:
success: 0: routine failed to make the checkes - it should throw an error if this happens.
         1: checks completed.

        
tplot variables: mvn_lpw_anc_ck_flag: flag for s/c pointing for each timestep, 1 = no data, 0 = data present
                 mvn_lpw_anc_spk_flag: flag for s/c position for each timestep, as above.

OPTIONS:
Set /loadspice to load the SPICE kernels found in 'mvn_lpw_load_kernel_files' to tplot memory. If not set, routine assumes they are already
   loaded.
   
Set /unloadspice to remove SPICE kernels from IDL memory once checking is complete. If not set, routine will leave them in IDL memory.


EGS:
time = dindgen(86400)+time_double('2014-12-08')  ;make a UNIX time array, or use get_data to grab a time array...

mvn_lpw_anc_get_spice_kernels, time, /notatlasp   ;find SPICE kernels and save into tplot variable 'mvn_lpw_load_kernel_files'
mvn_lpw_anc_spacecraft, /only_load_spice    ;load SPICE kernels to IDL

mvn_lpw_anc_ck_spk_check, time, ckcheck=-202000, objcheck=-202, refcheck='MAVEN_MSO'   
                                                         ;check ck and spk coverage, for MAVENs position in the MSO frame.
                                                         ;As of 2019-07-31, there is ~an hour of missing ck coverage for this date, if
                                                         ;you want to check the code is working.

NOTES: 
CMF worked out by hand how many MAVEN clock ticks represent one second: 65535.964843750000. This is hard coded below.

VERSIONS:
Created: 2019-07-31: Chris Fowler (cmfowler@berkeley.edu): code copied from mvn_lpw_anc_spacecraft.pro to be stand alone.

(See projects/maven/lpw/mvn_lpw_anc_ck_spk_check.pro)


MVN_LPW_ANC_CLEAR_SPICE_KERNELS

[Previous Routine] [Next Routine] [List of Routines]
NAME:
 mvn_lpw_anc_clear_spice_kernels
PURPOSE:
 Clears spice kernels, and unsets the 'kernel verified' flag in the
 mvn_spc_met_to_unixtime so that mvn_spc_met_to_unixtime doesn't crash
CALLING SEQUENCE:
 mvn_lpw_anc_clear_spice_kernels
 $LastChangedBy: cfowler2 $
 $LastChangedDate: 2016-07-26 07:47:14 -0700 (Tue, 26 Jul 2016) $
 $LastChangedRevision: 21525 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/maven/lpw/mvn_lpw_anc_clear_spice_kernels.pro $

(See projects/maven/lpw/mvn_lpw_anc_clear_spice_kernels.pro)


MVN_LPW_ANC_COVTEST

[Previous Routine] [Next Routine] [List of Routines]
Program written by CF on April 29th 2014 to check if give unix_times lie within the coverage of an SPK file. Multiple SPK files can be loaded 
and combined together to create larger coverage ranges.

USAGE:
coverage = mvn_lpw_anc_covtest(unix_in, kernels_to_check)

INPUTS:
unix_in: dblarr of unix times to check. ### ET times would be more accurate - check with Davin

kernels_to_check: string or strarr containing the full paths to the spk kernels you want to look at.

SPICE kernel files must already be loaded into IDL memory.

object: for now, the NAIF ID code of the object to check; -202 is MAVEN, 1003228 is CSS.

OUTPUTS:
result: an array n_elements(unix_in) long. 1 means time is within coverage, 0 means it is outside of the kernel coverage.


 Version 1.0

MODIFICATIONS:

 ;140718 clean up for check out L. Andersson
 20141208: modified by CF to check coverage for different objects - not just MAVEN. New input parameter 'object' allows this.

(See projects/maven/lpw/mvn_lpw_anc_covtest.pro)


MVN_LPW_ANC_ENG

[Previous Routine] [Next Routine] [List of Routines]
pro mvn_lpw_anc_eng, unix_in

PROCEDURE:   mvn_lpw_anc_eng
PURPOSE:
 Produce tplot variables of reaction wheel and thruster firing information when available.
 
USAGE:
 mvn_lpw_anc_eng, unix_in
 
INPUTS:
              

(See projects/maven/lpw/mvn_lpw_anc_eng.pro)


MVN_LPW_ANC_GET_SPICE_KERNELS

[Previous Routine] [Next Routine] [List of Routines]
Written 2014-10-20: CF: routine to get SPICE kernels for a certain time range using Davin's SPICE software. Routine places
names of kernels into the tplot variable mvn_lpw_load_kernel_files, which is used by mvn_lpw_anc_spacecraft to get position etc.
Added notatlasp keyword to disable server check, jmm, 2015-01-29

INPUTS:
utc_range: an array containing the times for which to search for SPICE kernels. Times can be double UNIX times, or string UTC times. The min and max values are fed into the SSL software
           to search for SPICE kernels covering this time range.

OUTPUTS:
tplot variable containing the kernels, used by mvn_lpw_anc_spacecraft.pro, mvn_lpw_load_kernel_files

KEYWORDS
Set /notatlasp if you are not using the LASP /spg/maven server to store kernels. This means the IDL environment variable ROOT_DATA_DIR is NOT set to /spg/maven at LASP.

Set /load to load SPICE kernels into IDL memory.



NOTE: 


EXAMPLE
mvn_lpw_anc_get_spice_kernels, ['2014-10-10', '2014-10-11']  ;get SPICE kernels for the date '2014-10-10/00:00:00 up to 2014:10:10/23:59:59, ie 24 hours worth.
mvn_lpw_anc_get_spice_kernels, [time_double('2014-10-10'), time_double('2014-10-11')]

EDITS:
2015-10-08: CMF added /load keyword.
2015-11-09: CMF: modified routine to take an array of double or string times, and use the max/min values to send into the Berkeley routines.

(See projects/maven/lpw/mvn_lpw_anc_get_spice_kernels.pro)


MVN_LPW_ANC_RM_RW

[Previous Routine] [Next Routine] [List of Routines]




 ;140718 clean up for check out L. Andersson
  Version 1.0

(See projects/maven/lpw/mvn_lpw_anc_rm_rw.pro)


MVN_LPW_ANC_SPACECRAFT

[Previous Routine] [Next Routine] [List of Routines]
pro mvn_lpw_anc_spacecraft, unix_in, not_quiet=not_quiet

PROCEDURE:   mvn_lpw_anc_spacecraft
PURPOSE:
 Routine to determine MAVEN pointing and position using the SPICE kernels.
 Routine determines angle between MAVEN x,y,z axes and the Sun.
 Routine gets MAVEN and Sun pointing directions in MAVEN spacecraft frame.
 SPICE is required to run this routine.
 Routine loads and unloads SPICE kernels for you.
 
 TO RUN:
 mvn_lpw_anc_get_spice_kernels, time    ;find required SPICE kernels for the UNIX time array 'time'. Kernels are saved into a tplot variable
 mvn_lpw_anc_spacecraft, time      ;calcualte pointing etc, using kernels stored previously in tplot. 


USAGE:
 mvn_lpw_cruciform, unix_in

INPUTS:

(See projects/maven/lpw/mvn_lpw_anc_spacecraft.pro)


MVN_LPW_ANC_SPICE_TIME_CHECK

[Previous Routine] [Next Routine] [List of Routines]
Program written by CF on April 26th 2014. Routine takes an input ET time, and checks to see if it is in the predicted or reconstructed part of the MAVEN
sclk kernel.

USAGE: 
last_et_time_in_kernel = mvn_lpw_spice_time_check

INPUTS: 

(See projects/maven/lpw/mvn_lpw_anc_spice_time_check.pro)


MVN_LPW_CDF_CDF2TPLOT

[Previous Routine] [Next Routine] [List of Routines]
mvn_lpw_cdf_cdf2tplot, file, varnames=varnames, all=all

Original file from SSL Berkeley, with original info below. Original file edited by Chris Fowler from Oct 2013 onwards for use
with the MAVEN lpw software. Routine takes a single CDF file input and loads the data, limit and dlimit data into IDL memory as
a tplot variable for plotting with the tplot software.

Note: Capital letters are important for tplot variables and should be included in 'file'.
      The varformat='*' needs to be included otherwise not all of the cdf variables are loaded.

INPUTS:
 - file: the full string directory and filename of the CDF file to be loaded into IDL memory.
 
NOTE: I haven't used the other keywords, they're not needed for basic cdf file loading.

OUTPUT:
 - a tplot variable in IDL memory containing the data, tplo limit and dlimit data for the specified CDF file. The tplot variable
   will have the same name as that for the variable saved within the CDF file, NOT the file name.
   
EXAMPLE:
 mvn_lpw_cdf_cdf2tplot, '/Users/MAVEN_example/mvn_lpw_act_V1.cdf', varformat='*'  => produces a tplot variable with the name 'mvn_lpw_act_V1'

EDITS:
 - Through till Jan 7 2014 (CF)

###########
 Original routine notes:
 
 Please note this routine is still in development
CDF2TPLOT ,files,varnames=varnames,all=all

 record=record if only one record and not full cdf-file is requested

 $LastChangedBy: cfowler2 $
 $LastChangedDate: 2015-11-30 08:31:39 -0800 (Mon, 30 Nov 2015) $
 $LastChangedRevision: 19487 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/maven/lpw/mvn_lpw_cdf_cdf2tplot.pro $
##########

Version 1.0
;140718 clean up for check out L. Andersson
151130: CMF: added cdf_filename keyword in sub routines to append cdf filename to dlimit.L0_datafile structure.

(See projects/maven/lpw/mvn_lpw_cdf_cdf2tplot.pro)


MVN_LPW_CDF_CHECK_VARS

[Previous Routine] [Next Routine] [List of Routines]
Program written by CF on May 1st 2014. Routine checks dlimit and limit fields of the given tplot variable and ensures there are no
blank string entries ' ' as these cause mvn_lpw_cdf_save_vars to crash.

INPUTS:
 tplot_var: string, tplot variable name to be checked
 
OUTPUTS:
 routine will replace any '' entries in dlimit and limit with 'N/A', and restore tplot variable.
 
  Version 1.0
 
MODIFICATONS:

;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_cdf_check_vars.pro)


MVN_LPW_CDF_INFO_TO_TPLOT

[Previous Routine] [Next Routine] [List of Routines]
mvn_lpw_cdf_info_to_tplot, cdfi

Original routine from SSL Berkeley was a .pro, with info below. Original routine edted by Chris Fowler from Oct 2013 onwards for use with the MAVEN 
lpw software. Routine is run from within mvn_lpw_cdf_cdf2tplot.pro. Routine takes data, tplot limit and dlimit data from a saved cdf file (input from
mvn_lpw_cdf_cdf2tplot.pro) and creates a single tplot variable for this data. The name of the tplot variable is also returned so that we can check
it has loaded into tplot.

INPUTS:
 - cdfi: an IDL structure containing the tplot variable data. This structure comes directly out of mvn_lpw_cdf_load_vars.pro.
 
OUTPUTS:
 - A single tplot variable. The variable name is that from within the CDF file, NOT the name of the CDF file.
 - The function also returns the tplot name of the variable loaded so that we can check if it loaded into tplot.
 
EXAMPLE:
 mvn_lpw_cdf_info_to_tplot, cdfi 
 
EDITS: 
 - Through till Jan 7 2014 (CF)

##############
 Original routine notes:

 This is a new routine that needs further testing, development, and enhancements.
 PROCEDURE:  cdf2tplot, cdfi
 Purpose:  Creates TPLOT variables from a CDF structure (obtained from "CDF_LOAD_VAR")
 This routine will only work well if the underlying CDF file follows the SPDF standard.

 Written by Davin Larson

 $LastChangedBy: cfowler2 $
 $LastChangedDate: 2016-10-31 10:58:33 -0700 (Mon, 31 Oct 2016) $
 $LastChangedRevision: 22234 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/maven/lpw/mvn_lpw_cdf_info_to_tplot.pro $
 #############
 
 Version 2.0
 ;140718 clean up for check out L. Andersson
 ;140918 CF: major changes to encompass SIS PDS requirements. Removed for loop over variables; deal with all variables at once. 
             now include MET and TT2000 time in the final tplot variable.
 151130: CMF: added cdf_filename keyword, to append cdf filename to dlimit.l0_datafile structure.

(See projects/maven/lpw/mvn_lpw_cdf_info_to_tplot.pro)


MVN_LPW_CDF_LATEST_FILE

[Previous Routine] [Next Routine] [List of Routines]
Routine to get the latest version and revision numbered file from an input directory and filename.

INPUT:
file: directory including start of filename upto but not including the version and revision part, for example the file test_v01_r02.sav
      would be entered as 'test'
      
      NOTE this routine assumes that the string format is as above, that the v and r numbers are two long, followed by four string characters (.cdf, .sav, etc)
      
      
OUTPUT:
function returns the directory and full filename to the latest file. If no files are found matching the input format, the string 'none_found' is returned.


NOTE:
This file assumes that the end format of the file is v##_r##.sav, and uses this to get version and revision numbers. If used on files of a different
format this routine will crash.

(See projects/maven/lpw/mvn_lpw_cdf_latest_file.pro)


MVN_LPW_CDF_LOAD_VARS

[Previous Routine] [Next Routine] [List of Routines]
Function, cdfi = mvn_lpw_cdf_load_vars(file)

Original routine from SSL Berkeley, with info below. Original routine edited by Chris Fowler from Oct 2013 onwards for use with
the MAVEN lpw software. Routine is called from within mvn_lpw_cdf_cdf2tplot.pro, and is part of the software to load a tplot variable into 
IDL memory from a saved CDF file.

INPUTS:
 - file: the full string directory and filename of the CDF file to be loaded into IDL memory. This is input in mvn_lpw_cdf_cdf2tplot.pro.

OUTPUTS:
 - A structure containing the tplot variable data.

KEYWORDS:
 NOTE: I'm not sure if these work yet as they may not have been written in by SSL. They don't seem necessary for basic file loading.
 
EXAMPLE:
cdfi = mvn_lpw_cdf_load_vars(file)

#############
 Original routine notes:

 FUNCTION cdfi = cdf_load_vars(file)
 Keywords:
   VARFORMAT = string or string array:  a string or string array (which may contain wildcard
                         characters) that specifies the CDF variable names to load.  Use
                          'VARFORMAT='*' to load all variables.
   VARNAMES = named variable   ;output variable for variable names that were loaded.
   SPDF_DEPENDENCIES :   Set to 1 to have SPDF defined dependent variables also loaded.
   VAR_TYPE = string or string array;  Variables that have a VAR_TYPE matching these strings will
                         be loaded.
   CONVERT_INT1_TO_INT2  Set this keyword to convert signed one byte to signed 2 byte integers.
                         This is useful because IDL does not have the equivalent of INT1   (bytes are unsigned)
   RECORD: Specify the record index where you want to start reading.  By default, this option will read one record.
   NUMBER_RECORDS: Specify the number of records that you want to read.  By default, this option will begin at record zero.
 
 Note: Record & Number_Records can be used together to specify a range of records to be read.

 Author: Davin Larson - 2006

 $LastChangedBy: jimm $
 $LastChangedDate: 2015-02-10 11:41:54 -0800 (Tue, 10 Feb 2015) $
 $LastChangedRevision: 16942 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/maven/lpw/mvn_lpw_cdf_load_vars.pro $

 ###############
 ;
  Version 1.0
  ;140718 clean up for check out L. andersson

(See projects/maven/lpw/mvn_lpw_cdf_load_vars.pro)


MVN_LPW_CDF_PRODUCE_L2

[Previous Routine] [Next Routine] [List of Routines]
pro mvn_lpw_cdf_produce_l2, varlist,dir_cdf=dir_cdf,revision=revision

This routine checks that the tplot variables given as inputs are in IDL memory. If so, they are turned into CDF files, and saved in the
user specified directory. 


INPUTS:         
 - varlist: a string or string array of tplot variables (already in IDL memory) to be saved as CDF files.
   
KEYWORDS:
    dir_cdf: A string, of the full path to the CDF save directory.
    revision: A string, of the revision number. If not set, todays date is used as default for now.
 
EXAMPLE:
 mvn_lpw_prd_w_E12
  mvn_lpw_cdf_produce_l2, 'mvn_lpw_calib_w_e12',revision='r2',dir_cdf=dir_cdf

CREATED BY:   Laila Andersson  April 2014
FILE:         mvn_lpw_cdf_produce_l2.pro
VERSION:      1.0
LAST MODIFICATION: 
05/02/2014 CF: added several checks for the keywords and inputs to avoid crashes. Tidied up routine.
;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_cdf_produce_l2.pro)


MVN_LPW_CDF_READ

[Previous Routine] [Next Routine] [List of Routines]
This routine should be used by most people to get LPW data. See below for examples.

Edited on 2015-01-09 by CF: this routine takes a date, works out which files to load, and sends those to mvn_lpw_cdf_read_file.pro.

Program written by Chris Fowler on Jan 6th 2014 as a wrapper for all the IDL routines needed to load cdf files into tplot memory
for the lpw instrument.

 INPUTS:
 - date: a string variable with the date you want to load files for in the form: 'yyyy-mm-dd'
 
 OUTPUTS:
 - the tplot variables and corresponding limit and dlimit data are loaded into IDL tplot memory.
 
 KEYWORDS:
 - vars: variable(s) that you wish to load. Entered as a string, or string array if you want multiple variables loaded. Entries can be upper or lower case. 
         The default (if not set) is to load all. There are twelve products LPW produces:
         wspecact       - waves active spectra
         wspecpas       - waves passive spectra
         we12burstlf    - electric field burst, low frequency    *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         we12burstmf    - electric field burst, mid frequency    *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         we12bursthf    - electric field burst, high frequency   *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         wn             - density derived from waves
         lpiv           - IV curves from Langmuir Probe mode
         lpnt           - Density, Temperature, Vsc dervied from lpiv
         mrgexb         - Pointing flux
         mrgscpot       - Vsc (spacecraft potential)
         euv            - EUV data              *** NOTE that due to directory formats EUV must be loaded in a separate call; it cannot be loaded with other LPW variables. See examples below.
         we12           - 1D electric field
 
 - level: level of data to load, entered as a string, or string array for multiple levels. Entries can be uppder or lower case. The default (if not set) is just L2. There are four options:
   l1a, l1b, l2, l3 (euv only). 
 
 - newdir: the default directory should be a mirror of SSL. Set this keyword if you want to look at files stored at another location. Note that sub folders within newdir are assumed to have the structure newdir/yyyy/mm/file.cdf. This hasn't been tested much and may break.

 - success: set to a named variable. This will return a string: '0': requested date and filetype was not loaded. '1': File load was successful.

 EXAMPLES:
 
 mvn_lpw_cdf_read, '2014-12-03', vars='lpiv', level='l2'                     ;Load L2 data, just the IV curves
 mvn_lpw_cdf_read, '2014-12-03'                                              ;Load all variables for L2 (default is L2)
 mvn_lpw_cdf_read, '2014-12-03', level=['l1a', 'l1b', 'l2'], vars = ['euv', 'lpnt']    ;load EUV and quantities derived from IV curves, for all levels (L1a, L1b, L2)
 
 ;To load EUV:
 mvn_lpw_cdf_read, '2015-01-02', vars='euv'     ;Load EUV, default is L2
 
 mvn_lpw_cdf_read, '2015-01-02', vars=['euv', 'lpnt', 'wn']   ;Load several LPW variables and EUV. This will load the LPW variables first, and produce a copy and pastable line in the terminal that will then load EUV. This line is identical to that shown below. 
     mvn_lpw_cdf_read, '2015-01-02', vars='euv'               ;Identical copy and paste line to load EUV data.
 
 EDITS:
 - Througn till Jan 7 2014 (CF).
 - June 23 2014 CF: modified dir input to be either the same length as varlist (for multiple paths) or jsut one entry (the same path for
                    each cdf file)
 -140718 clean up for check out L. Andersson
 -2015-01-09: CF: routine changed to accept date. This routine calls upon mvn_lpw_cdf_read_file and provides the filenames to do the loading.
 -2015-04-30: CF: previous updates include ability to get EUV data, default is L2, checking input variables for errors.
 -2015-08-04: CMF: edited preamble.
 -2016-06-08: CMF: added success keyword. 

 Version 2.0

(See projects/maven/lpw/mvn_lpw_cdf_read.pro)


MVN_LPW_CDF_READ_EXTRAS

[Previous Routine] [Next Routine] [List of Routines]
Routine to decompress the miscellaneous data produced from the LPW CDF file mvn_lpw_lp_n_t_L2.

Currently, this will produce separate tplot variables for:

S/C potential
Electron density
Electron temperature.

INPUTS:
Tplot variable stored in tplot memory: mvn_lpw_lp_n_t_L2

OUTPUTS:
New tplot variables:
mvn_lpw_lp_Ne_L2: electron density (/cc)
mvn_lpw_lp_Te_L2: electron temperature (K)
mvn_lpw_lp_Usc_L2: spacecraft potential (V)


MODIFICATIONS:
Created: 2015-04-14: CMF.
2016-12-20: CMF: bring in data.info information from data structure.

NOTES: as of last edit, must check input tplot variable has dl.xFieldnam present. Check final outputs - check default value is NaN.

(See projects/maven/lpw/mvn_lpw_cdf_read_extras.pro)


MVN_LPW_CDF_READ_FILE

[Previous Routine] [Next Routine] [List of Routines]
Most users should not use this routine; you should instead use mvn_lpw_cdf_read.pro:

   mvn_lpw_cdf_read.pro:  Retrieves CDF files based on input date in format 'yyyy-mm-dd'. Routine finds latest version and revision from available files and calls upon mvn_lpw_cdf_read.pro to load them. Keywords available, see routine. 
   
   mvn_lpw_cdf_read_file.pro (this file): Retrieves exact CDF files. User must give exact path and filename(s) to load. Primary use is calibration / file checking by LPW team. 


Routine renamed to mvn_lpw_cdf_read_file. This routine is given exact file names to load. mvn_lpw_cdf_read is given a date. That routine will call on this routine once it has figured out automatically which files to load, based on the date.

Program written by Chris Fowler on Jan 6th 2014 as a wrapper for all the IDL routines needed to load cdf files into tplot memory
for the lpw instrument.

 INPUTS:
 - dir: a string or string array containing the directory of the cdf files to be loaded into tplot memory (see example).
        dir can be one element if all cdf files lie in the same path, or it must be the same length as varlist if 
        cdf files lie in different paths. In this latter case, each element of dir maps to each element of varlist.
 - varlist: a string, or string array, of cdf filenames to be loaded into tplot memory. ".cdf" 
            must be included in the filename (see example).
 
 OUTPUTS:
 - the tplot variables and corresponding limit and dlimit data are loaded into IDL tplot memory.
 
 KEYWORDS:
 - See INPUTS. These are required.
 
 NOTE: tplot is required to run this routine.

 EXAMPLE: to load the following two CDF files:
 /Path1/test_file1.cdf
 /Path2/test_file2.cdf
 
 Run: If Path1 == Path2:     mvn_lpw_cdf_read_file, dir='/Path1/', varlist=['test_file1.cdf','test_file2.cdf']
      If Path1 =/= Path2:    mvn_lpw_cdf_read_file, dir=['/Path1/', '/Path2/'],  varlist=['test_file1.cdf','test_file2.cdf']
 
 EDITS:
 - Througn till Jan 7 2014 (CF).
 - June 23 2014 CF: modified dir input to be either the same length as varlist (for multiple paths) or jsut one entry (the same path for
                    each cdf file)
 -140718 clean up for check out L. Andersson
 - 2015-01-09: CF: changed routine to mvn_lpw_cdf_read_file. This is given file names manually. mvn_lpw_cdf_read is given a date, and calls upon this routine.
 - 2015-08-04: CMF: edited comments, cleaned up preamble.

 Version 2.0

(See projects/maven/lpw/mvn_lpw_cdf_read_file.pro)


MVN_LPW_CDF_SAVE_VARS

[Previous Routine] [Next Routine] [List of Routines]
Function dummy = mvn_lpw_cdf_save_vars(cdf_structure, new_cdf_name)

Original file is from SSL Berkeley - original information shown below. Original file edited by Chris Fowler from Oct 2013 onwards
for use with the MAVEN lpw software. Routine takes the output structure from mvn_lpw_cdf_dummy_struct.pro and saves it as a CDF file.

This routine runs within mvn_lpw_cdf_write.pro. The tplot variables and save directory are inputs to mvn_lpw_cdf_write.pro.

INPUTS:
 - cdf_structure: an IDL structure output from mvn_lpw_cdf_dummy_struct.pro containing data, tplot limit and dlimit data for a single tplot variable.
 - new_cdf_name: the full save directory for the CDF file ie /directory/filename.cdf. This is input in mvn_lpw_cdf_write.pro.
 
OUTPUTS:
 - One CDF file for a single tplot variable at the specified directory.
 
EXAMPLE:
 mvn_lpw_cdf_save_vars(tplot_structure, '/Users/MAVEN_example/mvn_lpw_pas_V1.cdf')
 
############## 
 Original file notes:
 
 FUNCTION: dummy = cdf_save_vars(cdf_structure,new_cdf_name)
 PURPOSE:  To dump data and metadata from an IDL structure into a CDF file.
		The structure format is the structure produced by cdf_load_vars.pro
 INPUTS:   cdf_structure : IDL structure defined by cdf_load_vars.pro
	    new_cdf_name  : a string to name the new CDF file with
 OUTPUTS:  CDF file named by the new_cdf_name input
 EXAMPLE:  dummy = cdf_save_vars(cdfi,'newcdf.cdf')

 Written by: Matt Davis  

Note: To use this routine you must have the CDF_EPOCH/CDF_EPOCH16 bug patch on your IDL6.3
and if you are using Solaris you need to be in 32-bit mode NOT 64-bit (ie, idl -32)

 Version 1.0
;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_cdf_save_vars.pro)


MVN_LPW_CDF_WRITE

[Previous Routine] [Next Routine] [List of Routines]
pro mvn_lpw_cdf_write, varlist, dir=dir

Program written by Chris Fowler on Oct 15th 2013 to create a CDF file from one tplot variable.
The required tplot variables must be read into IDL (using for example the r_header software) before 
running this routine. 

NOTE: caps are important in tplot names and must be included when present!

 INPUTS:
 - varlist is a string, or string array, from tplot_names, of tplot variables which have been loaded into IDL memory. 
 - dir is a string and is the base directory where the CDF files will be saved. The individual file names
   are written within the routine and are the tplot variable names. 
 - cdf_filename is an optional string. If set, the CDF filename will have the name 'cdf_filename'. If not set, the saved cdf file will
   be named using the tplot variable name only. The extension '.cdf' does not need to be included - it will be added automatically (the routine
   will still work even if it is included).
   
 OUTPUTS:
 - One CDF file per input tplot variable specified in varlist, containing the corresponding data, limit and dlimit information
   for each tplot variable. Save diretory is either the default or can be user specified in the keyword dir. 
   
 KEYWORDS:
 - See INPUTS.
   
 EXAMPLES:
 - mvn_lpw_cdf_write, varlist='mvn_lpw_pas_V1', dir='/Users/MAVEN_example/' => produces the file /Users/MAVEN_example/mvn_lpw_pas_V1.cdf
 
 - mvn_lpw_cdf_write, varlist=['mvn_lpw_pas_V1', 'mvn_lpw_pas_V2'], dir='/Users/MAVEN_example/'  => produces the files 
   /Users/MAVEN_example/mvn_lpw_pas_V1.cdf and /Users/MAVEN_example/mvn_lpw_pas_V1.cdf.
   
 - mvn_lpw_cdf_write, dir='/Users/MAVEN_example/', varlist='mvn_lpw_euv', cdf_filename='<yr><month><day><time>' => produces the file:
   /Users/MAVEN_example/mvn_lpw_euv_<yr><month><day><time>.cdf
 
   Version 1.0
 
 UPDATES:
 - Through till Jan 7th 2014.
 - May 1, 2014, CF: removed ability for varlist to accept numbers, must enter strings now. Added mvn_lpw_cdf_check_vars to ensure there are
   no blank '' fields in dlimit or limit, which causes mvn_lpw_cdf_save_vars to crash.
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_cdf_write.pro)


MVN_LPW_LOAD

[Previous Routine] [Next Routine] [List of Routines]

PROCEDURE:   mvn_lpw_load
PURPOSE:
 For a given UTC date, routine will check if the orbit data is present on the local machine. If not, it will download that data from the Berkeley server.
 Routine will then find the kernels required for that orbit on your machine. If they are not present, they will also be downloaded from the Berkeley server. 
 For now, routine grabs all SPICE kernels. 
 Directories of the data file and required SPICe kernels are saved into tplot variables so they can be accessed by other routines.
 Routine can only take one utc date, as our load routines only do one orbit at a time.
 
 The common block is for storing clock jump times for statistics.
 

USAGE:
 mvn_lpw_load, '2014-02-02'
 mvn_lpw_load, filetype='GROUND'
 mvn_lpw_load, '2014-02-02', packet=['EUV','HSK'], tplot_var='all'
 
INPUTS:

(See projects/maven/lpw/mvn_lpw_load.pro)


MVN_LPW_LOAD_CDF

[Previous Routine] [Next Routine] [List of Routines]

Program written by Chris Fowler on May 23rd 2014 as a wrapper for loading cdf files using mvn-lpw-load. Most users should use the routine mvn_lpw_cdf_read.pro to load LPW data. This routine
cannot be used as a stand alone routine - it is called upon by mvn_lpw_load.pro.

 INPUTS:
 - cdf_files: a string or string array of full directory cdf files to load.
 
 OUTPUTS:
 - Loads the corresponding tplot variables into IDL memory.
  
 KEYWORDS:
 - NONE
  
 NOTE: tplot is required to run this routine.
       only one file directory can be specified - all cdf files to be loaded must be within the same folder and directory.

 Version 1.0
 
 EXAMPLE: 
 mvn_lpw_cdf_load, ['/Path/to/CDF/file.cdf']
 
 EDITS:

;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_load_cdf.pro)


MVN_LPW_LOAD_FILE

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_load_file
PURPOSE:
  Decomutater of the LPW telemetry data
  This call uses three different ways to get data: cdf, L0 and ground data (no sc header)
  This reads one file and creates the requested data products
  Presently cannot merge two files <--------
  

USAGE:
  mvn_lpw_load,filename, tplot_var=tplot_var, filetype=filetype, packet=packet,board=board, compression=compression, use_spice=use_spice

INPUTS:
       filename:      The full filename (including path) of a binary file containing zero or more LPW APID's.  

KEYWORDS:
       filetype:   'cdl' archive files (L2-data), 'L0' (L0 data, binary file with sc header),  
                    or 'ground'/'ground_dir'a (file from ground testing, binary file without sc header)
                    Default is l0. Entry can be upper or lower case.
                    
       packet:     Which packets to read into memeory, default all packets ['HSK','EUV','AVG','SPEC','HSBM','WPK'] . Entry can be
                   upper or lower case.
       
       board:      board_names=['EM1','EM2','EM3','FM'] 
       
       tplot_var  'all' or 'sci' Which tplot variables to produce. 'sci' produces tplot variables which have physical unit 
                                 associated with them, and is the default. 'all' produces all tplot variables and includes 
                                 master cycle information etc. Can be upper or lower case.
                                 
       use_compression: String: 'y' or 'n'. For EUV ground data only. Default is 'y'. Upper or lower case accepted.
       
       nospice: set /nospice to not use SPICE within the pkt routines. SPICE must still be installed to use SPICE even if this 
                keyword is not set.

CREATED BY:   Laila Andersson  05-15-13
FILE: mvn_lpw_load.pro
VERSION:   1.0
LAST MODIFICATION: 
 2014, APril 17 CF: added kernel_dir keyword
 2014, April 15, CF: made default filetype='L0'; added SPICE y/n keyword; fixed bug with compression keyword
 2014, March 21, CF: added keyword spice to pkt routines
 2014, March 12, Chris Fowler - added keyword "compression"
 2014, Jannuary 5, Laila Andersson - added 'ground_dir'
 2013, July 11th, Chris Fowler - added keyword tplot_var=['all', 'sci']  
                   05/15/13
25/04/14 L. Andersson changed spice/kernerl_dir so onlu spice is used and contains kernel_dir
29/04/14 CF: Have automated kernel finding into routine so kernel_dir is not required to be set now. 
30/04/14 CF: Reomved keyword kernel_dir. No longer needed as this is sorted in mvn_lpw_anc_wrapper. Edited /nospice keyword. 
13/05/14 CF: Changed name to mvn_lpw_load_file       
20/05/2014 CF: fixed bug with ground keyword.  
;140718 clean up for check out L. Andersson 
20140807: CF: fixed case statement - not recognizing 'or' statement - filetype must now be lowercase. 
2014-10-06: CF: 'packet' is converted to all uppercase, so that user input can be any case. filetype converted to lower case to match existing code, but
              ;user can now input as any case.     

(See projects/maven/lpw/mvn_lpw_load_file.pro)


MVN_LPW_LOAD_FIND_CDF

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:

PURPOSE:
 Routine to search for the CDF files MAVEN lpw produces, and load them into tplot memory. Routine is called upon by mvn-lpw-load.pro. Routine
 will search for CDF files that lie within a UTC time given to mvn-lpw-load. 
 
USAGE:
  files = mvn_lpw_load_find_cdf('2014-02-02')

INPUTS:
  data: a UTC string of the form 'yyyy-mm-dd'. 

OUTPUTS:
  output is a string array containing full directories to cdf files which lie on the day input.

KEYWORDS:

  NONE
   Version 1.0

MODIFICATIONS:
2014-05-23  CF: finalized routine to work with mvn-lpw-load-file
;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_load_find_cdf.pro)


MVN_LPW_LOAD_L0[1]

[Previous Routine] [Next Routine] [List of Routines]
Routine to load multiple days of data using timespan and mvn_lpw_load (which is the L1 loader, not L2).

mvn_lpw_load_append_l1:

Sub routine to append tplot variables together on each iteration of mvn_lpw_load. 

INPUTS:
ext: string: temporary extension added to end of tplot names when combining.


.r /Users/cmfowler/IDL/STATIC_routines/LPW_loader/mvn_lpw_load_l0.pro

(See projects/maven/lpw/mvn_lpw_load_l0.pro)


MVN_LPW_LOAD_L0[2]

[Previous Routine] [Next Routine] [List of Routines]
Routine to load multiple days of data using timespan and mvn_lpw_load (which is the L1 loader, not L2).

INPUTS:


KEYWORDS:
trange: [a,b], string start and stop times for the time range to load. These should be in the format 'yyyy-mm-dd' (no hr:mn:ss
        resolution). These follow the same format as timespan, days are loaded from 'a' up to but not including 'b' eg:
        trange = ['2018-01-01', '2018-01-03'] will load data for two dates, 01 and 02.
        trange = ['2018-01-01', '2018-01-04'] will load data for three dates, 01, 02 and 03. 
                
        This routine will use date ranges set by timespan. If trange is set, this will overwrite the timespan settings.

packet: select which packets to load. See mvn_lpw_load for all options. Suggested setting: packet='nohsbm'. This will load all data
        except burst data, which takes a long time to load.

clearspice: The mvn_lpw_load routine automatically loads SPICE kernels (used for clock times). The default is to leave
            these kernels in memory in exit. Use this keyword to alter that behavior:
            string: '0': leave SPICE kernels in IDL on exit.
                    '1': remove SPICE kernels from IDL on exit (the default if not set).

notatlasp: Set this keyword if you are not connected to the LASP SPG server, otherwise your IDL session will not be able to find
           L0 files. 

(See projects/maven/lpw/mvn_lpw_load_l0.pro)


MVN_LPW_LOAD_L2

[Previous Routine] [Next Routine] [List of Routines]
mvn_lpw_load_l2

Routine to load L2 LPW and EUV data into IDL tplot variables. This routine requires access to the SSL SVN library (tplot, MAVEN software, etc). You can set a time range using the SSL routine timespan outside of this routine. Or,
you can give the routine a timespan using the trange keyword. The timespan can span multiple days, this routine grabs necessary L2 files and merges them into tplot variables.


INPUTS:
 - vars: variable(s) that you wish to load. Entered as a string, or string array if you want multiple variables loaded. Entries can be upper or lower case.
         The default (if not set) is to load ['lpnt', 'wspecact', 'wspecpas']. There are twelve products LPW produces:
         wspecact       - waves active spectra
         wspecpas       - waves passive spectra
         we12burstlf    - electric field burst, low frequency    *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         we12burstmf    - electric field burst, mid frequency    *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         we12bursthf    - electric field burst, high frequency   *** Burst mode data can take a long time to load and should be avoided if you don't want to use it.
         wn             - density derived from waves
         lpiv           - IV curves from Langmuir Probe mode
         lpnt           - Density, Temperature, Vsc dervied from lpiv
         mrgexb         - Pointing flux (as of 2015-11-19 not yet available)
         mrgscpot       - Vsc (spacecraft potential)
         euv            - EUV data              *** NOTE that due to directory formats EUV must be loaded in a separate call; it cannot be loaded with other LPW variables. See examples below.
         we12            - 1D electric field


OUTPUTS:
Tplot variables as listed below. The left column is the var input here, the right column is the tplot variable name produced.
'wspecact':     tvar = 'mvn_lpw_w_spec_act_l2'
'wspecpas':     tvar = 'mvn_lpw_w_spec_pas_l2'
'we12burstlf':  tvar = 'mvn_lpw_w_e12_burst_lf_l2'
'we12burstmf':  tvar = 'mvn_lpw_w_e12_burst_mf_l2'
'we12bursthf':  tvar = 'mvn_lpw_w_e12_burst_hf_l2'
'wn':           tvar = 'mvn_lpw_w_n_l2'
'lpiv':         tvar = 'mvn_lpw_lp_iv_l2'
'lpnt_n':       tvar = 'mvn_lpw_lp_ne_l2'
'lpnt_t':       tvar = 'mvn_lpw_lp_te_l2'
'lpnt_v':       tvar = 'mvn_lpw_lp_vsc_l2'
'mrgexb':       tvar = 'NA2'   ;THIS IS NOT AVAILABLE YET.
'mrgscpot':     tvar = 'mvn_lpw_mrg_sc_pot_l2'
'euv':          tvar = 'mvn_euv_calib_bands'
'we12':         tvar = 'mvn_lpw_w_e12_l2'


success: a float, set this to a variable to return upon exiting. Success will be an array, the same length as the number of variables requested in vars. Each element in success
         refers to the corresponding element in vars. For example, if vars=['wn', 'lpnt'], and success = [0., 1.], this means 'wn' failed to load, but 'lpnt' loaded successfully.
         Note that if you request multiple dates, and data for, say, 'wn', is found for some of those dates, success will be 1., despite failing for some dates where data was available.
         
         +1: routine successfully loaded requested variables. Note that currenty mrgexb is not available, and euv must be called separately from other LPW variables and will not be loaded 
             if other LPW variables are requested.
          0: no data were found
         -1: one or more input variables were not recognized. Check terminal output for which ones.
         -2: no timespan has been set. Set using timespan routine, or the trange keyword here.
         -3: trange was not entered as a string or float.

tplotvars: set this to a variable to return a string array of the tplot variables loaded into tplot memory.

KEYWORDS:
trange: a double precision array of UNIX times, or string array of UTC times in the format 'yyyy-mm-dd/hr:mm:ss.ssss'. This routine will load data spanning the min and max values of trange. If trange is only one element long, this 
        routine assumes a timespan of 1 day, ie trange : trange+1day. If this keyword is not set then the user must run timespan before hand to set the time range. If trange is set as a keyword, then timespan is used within this 
        routine to set the time range. Be careful - this will overwrite any previous uses of timespan!

set /noTPLOT to NOT tplot loaded data producets. If not set, default is to tplot loaded data.

NOTES:
I'm still working on this, so some dlimit fields will not be complete, such as time start and stop in various time frames. You will have to look at individual L2 CDF files one day at a time to get that information. For now I'm just getting the 
correct timespan of data to load.

HSBM burst data and we12 data contains a lot of points. If you load in several days of data and try to tplot it, your machine may crash!

If this routine encounters a problem, it will return (hopefully), not retall. Make sure your wrapper routine does not depend on any tplot variables produced by this routine.

Due to folder locations, you will need to call for EUV data in a separate call with this routine if you also want LPW data. See examples below.

This routine assumes you have the folder directory mirrored at SSL, with the environment variable 'ROOT_DATA_DIR' set. It will probably crash if you don't!




EXAMPLES:
timespan, '2015-04-01/02:33', 2.3    ;set timespan to be 2.3 days from set date.
mvn_lpw_load_l2, ['lpnt', 'wspecact', 'wspecpas'], success=sc1, tplotvars=tvs   ;load in Ne, Te, Vsc, and active and passive spectra. Upon return, sc1 is a float array, 3 elements long, and tvs is a string array. See above for details.


mvn_lpw_load_l2, ['lpnt', 'wn'], trange=['2015-03-01/13:43', '2015-03-06/12:00']  ;load in data and give routine a time range, which is then fed into the timespan routine here.
mvn_lpw_load_l2, ['lpnt', 'wn'], trange=time_double(['2015-03-01/13:43', '2015-03-06/12:00'])  ;use UNIX times instead.


timespan, '2015-04-01/02:33', 2.3
mvn_lpw_load_l2, ['lpnt', 'wspecact', 'wspecpas', 'euv']  ;Because you request EUV as well as LPW data, routine will only get LPW data. You must get EUV separately, as below
mvn_lpw_load_l2, ['euv']       ;When you only request EUV data, routine will get EUV data.


Created by: Chris Fowler (christopher.fowler@lasp.colorado.edu)
Creation Date: 2015-11-19.

EDITS:
2015-11-30: CMF: made all produced tplot variables lower case.
2016-06-09: CMF: bug fixed where, if multiple vars were requested, and one was not found, code would exit before trying to find the remaining requested vars. Success keyword is now a float
                 array the same length as input vars, with a value for each requested variable.
2016-12-20: CMF: added lines to bring through data.info field in the data structure.

(See projects/maven/lpw/mvn_lpw_load_l2.pro)


MVN_LPW_PKT_CLOCKS_SPICE

[Previous Routine] [Next Routine] [List of Routines]
Program written by Chris Fowler on Feb 19th 2014. Routine takes MAVEN s/c clock time in mvn_lpw_pkt routines and uses SPICE
to determine correct start / end times of each dataset.

INPUTS:
  Times must be in the correct MAVEN format ie 0123456789.12345. See MAVEN sclk SPICE kernels
  for more info (http://naif.jpl.nasa.gov/naif/data_mars.html).

(See projects/maven/lpw/mvn_lpw_pkt_clocks_spice.pro)


MVN_LPW_PRD_EUV

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_euv

Routine that takes EUV data and combines it with sc-attitude and produce one tplot variable for L2-production.
Much of the calibration to get the data product into research quality product is made in this routine  
The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.
   The tplot variables mvn_lpw_euv must be loaded into tplot memory before running this routine. 
   There are additional variables that need to be loaded
   Presently this routine do not go an grab them if they are missing.

INPUTS:         
 - None directly required by user. 
   
KEYWORDS:
 - make_cdf                                ;make one L2-cdf for the NASA DPS archive
    dir_cdf                                ;choose where the cdf will be produced
 
EXAMPLE:
 mvn_lpw_prd_euv


CREATED BY:   Laila Andersson  11-01-13
FILE:         mvn_lpw_prd_euv.pro
VERSION:      1.0
LAST MODIFICATION: 

(See projects/maven/lpw/mvn_lpw_prd_euv.pro)


MVN_LPW_PRD_IV_FIND_POINTS2

[Previous Routine] [Next Routine] [List of Routines]
Routine to find appropriate points.

Inputs: For REE, 1 = boom1, 2 = boom2
vswp1[*,128]   <= fitstruc.lpstruc.data.vswp / iswp
iswp1[*,128]
timeIn1[*]  <= fitstruc.lpstruc.time
ErrA1[*]    <= fitstruc.lpstruc.ree.val.ErrA
N1[*]       <= fitstruc.lpstruc.ree.val.N
T1[*]       <= fitstruc.lpstruc.ree.val.Te
valid1[*]   <= fitstruc.lpstruc.ree.val.valid
vswp2
iswp2
timeIn2
ErrA2
N2
T2
valid2[*]

Returns:
indices of matching useable points for both booms in an array [*,2] long, or the string 'none_found'

(See projects/maven/lpw/mvn_lpw_prd_iv_find_points2.pro)


MVN_LPW_PRD_IV_SWEEP_INFO

[Previous Routine] [Next Routine] [List of Routines]
Routine to determine if sweep is one or two direction. Can also tell if sweep is bad.

INPUTS:
Vswp, Iswp: [128] length arrays containing the voltage and current data.


RETURNS:
structure containing:
BiDir: 0: single; 1: double, 5: bad 
BadSweep: 0: good; 1: bad
Max, min of vswp and Iswp


(See projects/maven/lpw/mvn_lpw_prd_iv_sweep_info.pro)


MVN_LPW_PRD_LP_GET_THIS_VERSION_NO

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_get_this_version_no
 Read idl function headder to obtain the version information.

INPUTS:
   this_pro: Give procedure/function filename as ascii

KEYWORDS:

EXAMPLE:
 ver = mvn_lpw_prd_lp_get_this_version_no, 'mvn_lpw_prd_lp_get_this_version_no.pro'
   gives back character 'version mvn_lpw_prd_lp_get_this_version_no: #.#'

CREATED BY:   Michiko Morooka  10-21-14
FILE:         mvn_lpw_prd_lp_get_this_version_no.pro
VERSION:      2.0
LAST MODIFICATION:
 2014-10-20   M. Morooka

(See projects/maven/lpw/mvn_lpw_prd_lp_get_this_version_no.pro)


MVN_LPW_PRD_LP_IV

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_lp_IV

 Routine takes IV-cureves from both booms and combines them into one tplot variable for L2-production. 
 The default swp1 and swp2 are from different subcycles.
 The sweep length can vary but the number of points in the sweep is fixed
 There will be error both in the current and the sweep potential
 The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_lp_IV,'l1a'


CREATED BY:   Laila Andersson  11-04-13
FILE:         mvn_lpw_prd_lp_IV.pro
VERSION:      2.0
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working
 2015-05-26   L. Andersson   update for the L2 processing

(See projects/maven/lpw/mvn_lpw_prd_lp_iv.pro)


MVN_LPW_PRD_LP_IV_CAL

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_lp_iv_cal


INPUTS:
 - None directly required by user.
KEYWORDS:
  data=data,limit=limit,dlimit=dlimit
EXAMPLE:
 mvn_lpw_prd_lp_iv_cal,data=data,limit=limit,dlimit=dlimit

CREATED BY:   Michiko Morooka  13-05-14
FILE:         mvn_lpw_prd_lp_iv_cal.pro
VERSION:      0.0
LAST MODIFICATION:

(See projects/maven/lpw/mvn_lpw_prd_lp_iv_cal.pro)


MVN_LPW_PRD_LP_IV_LA

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_lp_IV_la

 Routine takes IV-cureves from both booms and combines them into one tplot variable for L2-production. 
 The default swp1 and swp2 are from different subcycles.
 The sweep length can vary but the number of points in the sweep is fixed
 There will be error both in the current and the sweep potential
 The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_lp_IV,'l1a'


CREATED BY:   Laila Andersson  11-04-13
FILE:         mvn_lpw_prd_lp_IV.pro
VERSION:      1.0
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working

(See projects/maven/lpw/mvn_lpw_prd_lp_IV_la.pro)


MVN_LPW_PRD_LP_IV_N_T

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_lp_IV_n_t_

 Routine takes IV-cureves from both booms and combines them into one tplot variable for L2-production. 
 The default swp1 and swp2 are from different subcycles.
 The sweep length can vary but the number of points in the sweep is fixed
 There will be error both in the current and the sweep potential
 The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_lp_IV,'l1a'


CREATED BY:   Laila Andersson  11-04-13
FILE:         mvn_lpw_prd_lp_IV.pro
VERSION:      2.1
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working
 2015-05-22   L. Andersson   update to get the L2 working

(See projects/maven/lpw/mvn_lpw_prd_lp_IV_n_t.pro)


MVN_LPW_PRD_LP_N_T_CLEAN_SWP_PP

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_n_t_fit
 Clean up the sweep fit result. Take away uncertain data points.

INPUTS:
   PP  :  Analysed LP sweep data set structure.

EXAMPLE:
 PP = mvn_lpw_prd_lp_n_t_clean_swp_pp(PP)

CREATED BY:   Michiko Morooka  03-23-15
FILE:         mvn_lpw_prd_lp_n_t_clean_swp_pp.pro
VERSION:      1.2
LAST MODIFICATION:
 2015-03-23   M. Morooka
 2015-03-26   M. Morooka (1.0)
 2015-06-19   M. Morooka (1.1) Add ion side calcuration
 2015-07-02   M. Morooka (1.2) derive_io2

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_clean_swp_pp.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[1]

[Previous Routine] [Next Routine] [List of Routines]
THIS IS _V2: here I used oen set of params for Vsc > -1.5V. In this range, the corrections jump around, so the only way to do this is using  bulk stats for this region. Above this, corrections are a function of Vsc: this
region is more stable and does not jump around. The corrections are also smaller. Compare_waves_lp4 is the major change in _V2 - I hard coded in the changes.

Compare LPW waves densities with IV densities.
.r /Users/chfo8135/IDL/MAVEN/Software/analysis_software/ImprovedFitRoutines/compare_waves_lp/mvn_lpw_prd_lp_n_t_compare_waves.pro

compare_waves_lp1:
Load in data for specified dates, save Ne, Te, Vsc, ErrA, NeWaves (NeW), altitude, position, UVI in a big save file, to be re-loaded in subsequent plotting routines.

INPUTS:

KEYWORDS:
trange: string, two element array ['yyyy-mm-dd', 'yyyy-mm-dd'], the start and stop times to run the routine for. If not set the default range 2014-10-08 - 2015-11-31 will be used (when we have waves data).


NOTES:
The folder compare_data1 is for the default time range.

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[2]

[Previous Routine] [Next Routine] [List of Routines]
Analyze the data saved from above. Enter various restrictions on what to plot below.

INPUTS:
filename: string, full directory name of file to load.


KEYWORDS:
errA: the value below which values are plotted. Default if not set is <50.
VscH, VscL: values of Vsc to use: VscL < Vsc < VscH. Default if not used is -6 < Vsc < 5. NOTE don't use 0. as it's a keyword - it won't work, use 0.00001 or something.
angCORRM: +1. or -1., manually set as auto software doesn't work.
result: set to a variable that will contain the fitted parameters. 
yesPLOT: set as a float: 1 to plot figures, 2 to NOT plot figures.

compare_waves_lp2, '/Users/chfo8135/IDL/MAVEN/Software/analysis_software/ImprovedFitRoutines/compare_waves_lp/compare_data1/compare_data.sav'   ;full datase with waves.

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[2]

[Previous Routine] [Next Routine] [List of Routines]
Calculate median, and stddev (based on median) of some data. Give X,Y pairs as two arrays, binsize and min/max bin values. Returned are two arrays: the 'X axis' (the bins used), and the computed results as an Nx3 array: median, median+-stddev.
Use the median instead of mean as this is much better for datasets that can have one or two large points the skew the mean.

INPUTS:
Xdata: array, X data points
Ydata: array, Y data points
binsize: size of bins
low: lowest X value to consider when binning.
upp: highest X value to consider when binning. Points outside of low and upp are not considered.


KEYWORDS:

RETURNS:
structue containing two arrays:
result.Xbins = bins used, for labeling the X axis.
result.med = median value in each bin.
result.medupp = median + stddev in each bin.
result.medlow = median - stddev in each bin.


(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[3]

[Previous Routine] [Next Routine] [List of Routines]
Things that need saving to work out correction to Nlp. These things are all a function of Vsc.
Vsc middle - spacecraft potential: value at the middle of the bin used.
Xp,Yp - point where median fit line (to data) crosses 1:1 line.
Ar - angle between fit line and 1:1 line (radians)
result[0], result[1]: A, B(*x) - constants for best fit line.


 = 6 parameters (1 indpendent (Vsc), 5 dependent).

KEYWORDS:
set /saveVALS to save the fitted parameters into an IDL save file structure.

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[4]

[Previous Routine] [Next Routine] [List of Routines]
This routine will correct LP densities as fn(Ne, Vsc). Give the routine Ne and Vsc from the LP fits. It will look up the correction parameters saved using the above routines. These parameters are then used to correct the data usign the formula within 
the code. This formula is also in the above routines.

RESTRICTIONS:
Currently empircal correction only works for -0.1 > Vsc > -7  V. There is not enough data statistically do this correction outside of these ranges.

INPUTS:
N: density for LP (in units /cc) (float).
Vsc: spacecraft potential from LP (volts, sign is negative for 99% of the mission) (float).
Nwaves: waves density (/cc) (float) to compare with LP density.


KEYWORDS:
paramfile: string: name of param file to load.
output: set to a named variable that will contain the output structure. This structure will contain Nin, Vscin, and Nout, the corrected densities. 
VscR: Vsc range: set low to high, eg [-6., -1.], to only use points in that range. Default [-7., -0.1] used if not set. This is for plotting purposes only.
Set /plotC to plot the corrected data. This requires you to specify the waves data as well. This will plot Nwaves vs Nlp. If you don't have Nwaves, the routine will still work, but cannot produce this plot.


NOTES:
Densities are converted to log10 space, corrected, and then converted back to linear. Correct units are essential!

EXAMPLE:
For Chris:
d = compare_waves_lp6()
compare_waves_lp5, d.nlp, d.vsc, d.nwa, paramfile='EMP_PARAMS_2016-03-01T17-40-21.sav', /plotC      ;plot the corrections as fn(Nwaves) - NOTE: you must give the routine Nwaves.


For someone else:
First set 'loadDIR' below to whereever you saved the params file.
Get Nlp and Vsc in arrays, 'NinLP' and 'Vscin'.
Use:

compare_waves_lp5, NinLP, Vscin, paramfile='EMP_PARAMS_2016-02-09T19-10-41.sav', output=output ; OLD FILE ;don't give the routine Nwaves; just do the corrections, and return them in 'output'.
compare_waves_lp5, NinLP, Vscin, paramfile='EMP_PARAMS_2016-02-16T16-15-15.sav', output=output  ; NEW FILE, params-2.
compare_waves_lp5, NinLP, Vscin, paramfile='EMP_PARAMS_2016-02-29T21-56-46.sav', output=output  ;Latest params-1.
compare_waves_lp5, NinLP, Vscin, Nwa, paramfile='EMP_PARAMS_2016-02-29T21-56-46.sav', output=output  ;Latest params-1., if you have waves
compare_waves_lp5, NinLP, Vscin, Nwa, paramfile='EMP_PARAMS_2016-03-01T00-45-20.sav', output=output  ;Latest params, if you have waves
compare_waves_lp5, NinLP, Vscin, Nwa, paramfile='EMP_PARAMS_2016-03-01T01-26-24.sav', output=output  ;Latest +1
compare_waves_lp5, NinLP, Vscin, Nwa, paramfile='EMP_PARAMS_2016-03-01T17-40-21.sav',    ;latest+2

compare_waves_lp5, d.NLP, d.Vsc, d.Nwa, paramfile='EMP_PARAMS_2016-03-03T19-34-50.sav'   ;latest+3 - NOTE: format change, I only save result0 and result1 now, so this file is different in compare_waves_lp_V2.pro.

the array output will contain the input variables, and the corrected densities.
This routine can be given any range of Vsc and density values - it will only correct those where -1>Vsc>-7 volts.


(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[5]

[Previous Routine] [Next Routine] [List of Routines]
Routine to load in NE and Vsc from a save file. Output is filtered for ErrA and valid, and is a data structure.

EXAMPLE:
d = compare_waves_lp6()

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[6]

[Previous Routine] [Next Routine] [List of Routines]
Use compare_waves_lp2 to generate data arrays containing fit parameters. This routine uses a for loop to generate the values for many Vsc values quickly.
The data are put into a save file.


(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[7]

[Previous Routine] [Next Routine] [List of Routines]
Routine to plot the surface contour of the corrections used as fns(vsc, density). This routine makes a 2D array where one axis is Vsc, one is density. It uses
compare_waves_lp7 to feed in these values, and calculates the correction to density. This is saves in the 2D array. The surface of this array is then plotted.

KEYWORDS:
set loadFILE to string - the filename to load in a datagrid instead of deriving. This is much quicker.
set save='filename.sav' to save the datagrid into a save file, with this filename. Save directory is set below.


EXAMPLES:
compare_waves_lp8, loadFILE='LPcorrectionDATA_HiRes.sav'   ;hi res grid file
compare_waves_lp8, loadFILE='LPcorrectionDATA_LowRes.sav'   ;low res grid file (for testing)


(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_COMPARE_WAVES[8]

[Previous Routine] [Next Routine] [List of Routines]
New way of calculating correction amount based on a 2D grid. Using Vsc and density, the  correct indices are calculated and the correction amount (%) identified. This is applied to the input density, to give the output.
This method will be faster then compware_waves_lp5.

Currently empircal correction only works for -0.1 > Vsc > -7  V. There is not enough data statistically do this correction outside of these ranges.

INPUTS:
NlpIN: density for LP (in units /cc) (float).
VscIN: spacecraft potential from LP (volts, sign is negative for 99% of the mission) (float).
NwaIN: waves density (/cc) (float) to compare with LP density. If not set, this is ignored. If set, a before and after plot will be produced.
filename: string: the full directory and filename of the IDL save file containing the 2D surface information.

OUTPUTS:
NlpOUT: set to a variable to contain the corrected densities, in the same order as they were input.
success: 0 means no success. 1 means successful
corrected: an array of same length NlpIN: it will contain 1s and 0s: 1 means this indice was corrected, 0 means it was not (it lays outside of the correction ranges applicable).


EXAMPLES:
compare_waves_lp9, d.Nlp, d.Vsc, d.Nwa, filename='/Users/chfo8135/IDL/MAVEN/Software/analysis_software/ImprovedFitRoutines/compare_waves_lp/compare_data1/LPcorrectionDATA_HiRes.sav', NlpOUT=NlpOUT, corrected=corrected, success=success

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_compare_waves.pro)


MVN_LPW_PRD_LP_N_T_FIT

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_n_t_fit
 Sweep fitting function set for MAVEN/LPW

INPUTS:
   PP  :  LP sweep data set structure. (See  )
   type:

KEYWORDS:
   win: use this keyword to see the every sweeep plot during the run

EXAMPLE:
 mvn_lpw_prd_lp_n_t_fit, PP, 'l0'

CREATED BY:   Michiko Morooka  10-21-14
FILE:         mvn_lpw_prd_lp_n_t_fit.pro
VERSION:      2.6
LAST MODIFICATION:
 2014-10-20   M. Morooka
 2014-11-13   M. Morooka Update first version of fitting set.
 2014-11-17   M. Morooka Bug fixed for the electron fitting limit define. (fitswp_10V_00)
                         Outer region fitting fixed to two components. (fitswp_SW_02)
 2014-11-24   M. Morooka add givenU define algorithm (fitswp_10V_00)
 2014-12-19   Add two electron component fitting to the dense plasma resion. 
               fitswp_SW_03, fitswp_10V_01
 2015-01-31   Change fitting routine for the dense plasma resion. 
               fitswp_10V_02_e
 2015-02-02   Change fitting routine for the dense plasma resion. Two electron component fitting.
               fitswp_10V_03_2e
 2015-03-23   Minor changes for fitting routine. 
 2015-04-16   dTe is added dTe (2.7)
 2015-05-26   new gaussian fit (3.0)
 2015-07-02   revise gaussian fit (3.1)

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_fit.pro)


MVN_LPW_PRD_LP_N_T_LA

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_lp_n_t_la

 Routine takes IV-cureves from both booms and combines them into one tplot variable for L2-production. 
 The default swp1 and swp2 are from different subcycles.
 The sweep length can vary but the number of points in the sweep is fixed
 There will be error both in the current and the sweep potential
 The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_lp_IV,'l1a'


CREATED BY:   Laila Andersson  11-04-13
FILE:         mvn_lpw_prd_lp_IV.pro
VERSION:      1.0
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_la.pro)


MVN_LPW_PRD_LP_N_T_MM

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_n_t_mm

 ROUTINE that use 'LPSTRUC' data struture and proceed the sweep curve fitting for MAVEN/LPW
 
, prd_ver=prd_ver, lpstruc_filename=lpstruc_filename, pp_save=pp_save, pp_dir=pp_dir
INPUTS:
   in1:  Data structure for LP sweep analysis.
         Specify prbe number if lp sweep data and ephemeris exsist in tplot var.

KEYWORDS:
   I_offset: give specific number for negative biased current offset. (default NaN)
   
EXAMPLE:
 swp_pp = mvn_lpw_prd_lp_n_t_mm(lpstruc)
 swp_pp = mvn_lpw_prd_lp_n_t_mm(probe_no)

CREATED BY:   Michiko Morooka  01-14-15
FILE:         mvn_lpw_prd_lp_n_t_mm.pro
VERSION:      2.0
LAST MODIFICATION:
   15-02-20/M.W.Morooka/ Two component fitting is activated for lpw mode-0.
                         Adding dNe dTe dU
   15-03-23 M.Morooka Fit result clean option added.
   15-04-15 M.Morooka bug fix for make_sweep_set (1.1)
   15-05-26 M.Morooka new gaussian fitting for ionosphere (2.0)
   15-07-02 M.Morooka Minor procedure change (2.1)

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_mm.pro)


MVN_LPW_PRD_LP_N_T_PROXY

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_n_t_proxy


INPUTS:
    PP:  Analysed LP sweep data set structure.

EXAMPLE:
 PP = mvn_lpw_prd_lp_n_t_clean_swp_pp(PP)

CREATED BY:   Michiko Morooka  09-18-15
FILE:         mvn_lpw_prd_lp_n_t_proxy.pro
VERSION:      0.0

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_proxy.pro)


MVN_LPW_PRD_LP_N_T_READCAL

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_n_t_readcal
   Read calibration text file for maven lpw sweep analysis.

INPUTS:
   input: information to identify the file name and output. 'input' can be
           % full path of the cal file (ex.'lpwdata_dir/data/sci/lpw/fitpar/2014/11/mvn_lpw_fitpar_20141010_l1a_p1_v00_r00.txt')
           % time in format of 'YYYY-MM-DD/HH:MM:SS'
           % date in format of YYYYMMDD (integer) or 'YYYY-MM-DD'
   prb:    probe no (1/2)
KEYWORDS:
   lpw_cal_dir:  Specify the data stored directory. If not default is getenv('ROOT_DATA_DIR')
   no_latest  :  Set this keyword to chose old cal file.
OUTPUT:
   cal info structure. 
EXAMPLE:
 caldata = mvn_lpw_prd_lp_n_t_readcal('lpwdata_dir/data/sci/lpw/fitpar/2014/11/mvn_lpw_fitpar_20141010_l1a_p1_v00_r00.txt')
 caldata = mvn_lpw_prd_lp_n_t_readcal(20141010,1)
 caldata = mvn_lpw_prd_lp_n_t_readcal('2014-10-10/00:00:00.0',1)
 caldata = mvn_lpw_prd_lp_n_t_readcal(1.4129352e+09,1); (time in tplot time format) 

CREATED BY:   Michiko Morooka  11-18-14
FILE:         mvn_lpw_prd_lp_n_t_readcal.pro
VERSION:      0.0
LAST MODIFICATION:

(See projects/maven/lpw/mvn_lpw_prd_lp_n_t_readcal.pro)


MVN_LPW_PRD_LP_SWPPLOT

[Previous Routine] [Next Routine] [List of Routines]
;PROCEDURE: mvn_lpw_prd_lp_swpplot
 Standard plot for Langmuir Probe sweeps. Displays V-I curve of liner, logalithmic, and derivertive.

;INPUT:
 sweep_data: list of structured sweep data. To plot mvn lpw data, use 'mvn_lpw_swpextracr'
             data structure must contain 'U' as voltage and 'I' as current

KEYWORDS:

;CREATED BY:  Michiko W. Morooka Apr. 2014
FILE      : mvn_lpw_prd_lp_make_l0filelist.pro
VERSION:   0.0
LAST MODIFICATION:   04/18/14

(See projects/maven/lpw/mvn_lpw_prd_lp_swpplot.pro)


MVN_LPW_PRD_LP_SWP_SETUPPARAM

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_prd_lp_swp_setupparam_new
 Create initial Sweep parameter set forMAVEN/LPW sweep analysis.

INPUTS:
OUTPUTS: gives LP Sweep parameter set specific for the mvn_lpw_prd_lp analys program.
KEYWORDS:
   win: use this keyword to see the every sweeep plot during the run

EXAMPLE:
 mvn_lpw_prd_lp_swp_setupparam, PP, 'l0'

CREATED BY:   Michiko Morooka  10-21-14
FILE:         mvn_lpw_prd_lp_n_t_fit.pro
VERSION:      3.0
LAST MODIFICATION:
 2014-10-20   M. Morooka
 2014-11-17   M. Morooka   Add err information
                           Add current_l0, voltage_l0
 2015-01-13   M. Morooka   Add extra dummy fields
 2015-04-16   M. Morooka   dTe added (2.3)
 2015-05-26   M. Morooka   Change for new_fit (3.0)
 2015-06-19   M. Morooka   Minor addition (3.1) (Ni2, mi2)

(See projects/maven/lpw/mvn_lpw_prd_lp_swp_setupparam.pro)


MVN_LPW_PRD_MERGE_DLIMIT

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_merge_dlimit

Routine combines dlimit structures for tplot variables. Input variables must have the same size dlimit structures, with the same field names. 

INPUTS:         

 - found_variables: a string array of tplot variables in IDL memory, whose dlimits are to be merged. THE FIRST ENTRY of this array is assumed to be
                    a dummy string with text information.
   
KEYWORDS:
 NONE
 
EXAMPLE:
 dlimit_merge = mvn_lpw_prd_merge_dlimit(['Variables to merge', 'mvn_lpw_act_e12', 'mvn_lpw_pas_e12'])


CREATED BY:   Chris Fowler  05-21-2014
FILE:         mvn_lpw_prd_merge_dlimit.pro
VERSION:      1.0
LAST MODIFICATION: 


(See projects/maven/lpw/mvn_lpw_prd_merge_dlimit.pro)


MVN_LPW_PRD_MRG_EXB

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_mrg_ExB

Routine takes mvn_lpw_w_E12_L2 data and Magnetometer-L2 data and procduse the poynting flux based on the 1-D electrci field information
the resulting E, B, ExB=S is down sampled so the S product represent a time interal 
The error information provide information of the uncurtanty in the qunatity weighted by the dynamics in the E and B on shorter time scales
the flag provide the confidnece level of the result
this product will be the last we finnish working with

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_mgr_ExB


CREATED BY:   Laila Andersson 11-06-2013
FILE:         mvn_lpw_prd_mgr_ExB.pro
VERSION:      1.0
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working 
 2014-10-06: CF: modified dlimits for ISTP comliance.

(See projects/maven/lpw/mvn_lpw_prd_mrg_exb.pro)


MVN_LPW_PRD_MRG_SC_POT

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_mrg_sc_pot

Routine takes V1 and V2 data from all subcycles and combine them to one product.
Note for some sub-cycles both V1 and V2 is produced simultaniously.
Presently the sc_pot derived from the IV-sweep -fit is not used   
The cadence change between the different sub-cycles and the different operation modes
The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.
   The tplot variables must be loaded into tplot memory before running this routine. 
   Presently this routine do not go an grab them if they are missing.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_mrg_sc_pot


CREATED BY:   Laila Andersson 11-04-2013
FILE:         mvn_lpw_prd_mrg_sc_pot.pro
VERSION:      2.1
LAST MODIFICATION:
 2014-05-22   L. Andersson   sigificant update and working 
 2015-05-22   L. Andersson   update to get the L2 working

(See projects/maven/lpw/mvn_lpw_prd_mrg_sc_pot.pro)


MVN_LPW_PRD_SWP_EXTRACT

[Previous Routine] [Next Routine] [List of Routines]
;FUNCTION: mvn_lpw_prd_swp_extract

;INPUT: time
   time: in format of 'YYYY-MM-DD/HH:MM:SS'

;KEYWORDS: tnameI=tnameI, tnameV=tnameV, prb=prb
   tnameI : default is 'mvn_lpw_swp1_I1'/'mvn_lpw_swp2_I2'
   tnameV : default is 'mvn_lpw_swp1_I1_pot'/'mvn_lpw_swp2_I2_pot'
   prb    : probe no 1/2
;OUTPUT
   returns a structure contains, T, U, and I

;Examples:
   swp = mm_mvn_lpw_swp_extract('2014-07-07/19:34:00',tnameI='mvn_lpw_swp2_I2',tnameV='mvn_lpw_swp2_I2_pot')
   swp = mm_mvn_lpw_swp_extract('2014-07-07/19:34:00',prb=1)
   swp = mm_mvn_lpw_swp_extract('2014-07-07/19:34:00')
;CREATED BY:  Michiko W. Morooka Apr. 2014
FILE      : mvn_lpw_prd_swp_extract.pro
VERSION:   0.0
CREATED:             M. Morooka 04/18/14
LAST MODIFICATION:   M. Morooka 11/22/14 added to mvn_lpr_prd product

(See projects/maven/lpw/mvn_lpw_prd_swp_extract.pro)


MVN_LPW_PRD_W_ACT_DENSITY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 	mvn_lpw_prd_w_act_density
 PURPOSE:
 	Operates on loaded tplot_variable named "mvn_lpw_spec_hf_act"
 	Creates new variables
		'mvn_lpw_spec2_hf_act_bgdsub': Background-supressed spectra (dB above background)
		'mvn_lpw_spec2_hf_act_density': Determined plasma density (cc) from the location of the peak signal.
 			The errors dy and dv give the lower and upper errors, determined from the width of the peak.
               'mvn_lpw_spec2_hf_act_conf': A rough confidence estimate.  100 being OK, 0 being bad.  Trust anything _above_ 50, for now.
		'mvn_lpw_spec2_hf_act_flag': Bitfield flag for plasma density
 			Any flag = 0 indicates good data with no noted issues.
 			Otherwise, "(flag AND flag_ID) NE 0" indicates that flag_ID is True, where flag_ID
 			is one of
				HF_ACT_DENSITY__ERR__SNR_TOO_LOW = 1; Peak SNR too low (<HF_ACT_MIN_SNR)
				HF_ACT_DENSITY__ERR__HWHM_UNDEF  = 2 ; HWHM could not be determined
				HF_ACT_DENSITY__ERR__PK_NONUNIQ  = 4 ; Peak is non-unique
				HF_ACT_DENSITY__ERR__PKWIDTH_UNDEF = 8; Peak width could not be determined
				HF_ACT_DENSITY__ERR__OFFSCALE_HIGH = 16 ; Frequency located is too high;
		'mvn_lpw_spec2_hf_act_snr':  SNR for the located peak (dB above background)
		'mvn_lpw_spec2_hf_act_density_adj': Tweaked density, based on weighted average of the nearest values to the peak.
 CATEGORY:
 	MVN_LPW
 KEYWORD PARAMETERS:
 	print_out and plot_out: For debugging purposes
 MODIFICATION HISTORY:
 2015-01-20: Created by david.andrews@irfu.se
 2015-01-28: DA: added condfidence penalty to data with MIN_SNR > SNR > LOW_SNR.  V2.
 2015-02-03: DA: added a mode flag, default to 'act', but allows running same routine for passive sounding.  Doesn't work well though.
 2015-02-03: DA: rejigged errors, now providing independent upper and lower values, at which the peak falls to background levels.
 2015-02-05: DA: tplot variable storing the located frequency is now created by default. V3
 2015-02-06: DA: applied a small 3% shift to the peak locator, to favour lower frequencies over heigher ones.  
                 Also now uses spec2 rather than spec, so that we are now in physical units (?).
                 This has had a knock-on effect of changing the SNR thresholds upwards.
 2015-03-24: DA: V6. Version delivered today, for use in L2 generation. No shifts are now applied.  
 		  An attempt is made to flag off-scale-high measurements, and add a confidence penalty here.
 2015-04-28: DA: Fixed for the L2 generation.  Off-scale high test uses SPICE altitudes and SZA to derive an expected density
                 If we're off significnatly from this value, then flagged as bad data.  This can maybe be improved in the future. 
2015-11-10   Remove the line to get the spice kernels, this is done in load

(See projects/maven/lpw/mvn_lpw_prd_w_act_density.pro)


MVN_LPW_PRD_W_E12

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_w_E12

Routine takes active and passive E12 data, and combines them into one tplot variable for L2-production. 
Act and Pas occur at different points in  the master cycle and so they never overlap in time. 
They may have different time steps. 
The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.
   The tplot variables mvn_lpw_act_E12 and mvn_lpw_pas_E12 must be loaded into tplot memory before running this routine. 
   Spacecraft attitude and position information will also be used if present.

INPUTS:         

 - ext: file extension for the CDF file: L1a, L1b, L2
   
KEYWORDS:
 
 
EXAMPLE:
 mvn_lpw_prd_w_E12


CREATED BY:   Chris Fowler  10-23-13
FILE:         mvn_lpw_prd_w_E12.pro
VERSION:      1.0
LAST MODIFICATION: 
05-19-2014 CF: cleaned up layout, removed CDF save option (goes in a stand alone routine)

(See projects/maven/lpw/mvn_lpw_prd_w_e12.pro)


MVN_LPW_PRD_W_E12_BURST

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_w_E12_burst

Routine takes E12 burst data (lf/mf/hf) produce a L2-product. 
The error information and flag information is taking into consideration information from other sources such as spacecraft atitude.
   There are additional variables that need to be loaded
   Presently this routine do not go an grab them if they are missing.

INPUTS:         
     type                                   ;'lf','mf','hf'
    ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 - make_cdf                                ;make one L2-cdf for the NASA DPS archive
    dir_cdf                                ; where to put the cdf file
 
EXAMPLE:
 mvn_lpw_prd_w_E12_burst,type


CREATED BY:   Laila Andersson 11-06-2013
FILE:         mvn_lpw_prd_w_E12_burst.pro
VERSION:      1.0
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working
 2015-04-09   T. McEnulty - getting ready for L2 production

(See projects/maven/lpw/mvn_lpw_prd_w_e12_burst.pro)


MVN_LPW_PRD_W_E12_CALIB

[Previous Routine] [Next Routine] [List of Routines]

(See projects/maven/lpw/mvn_lpw_prd_w_e12_calib.pro)


MVN_LPW_PRD_W_N

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_w_n

Takes active and passive HF spectra data and searches for the plasma line for L2-production. 
Act and Pas occur at different points in the master cycle so they never overlap in time.
The error information and flag information is also taken into consideration as well as information from other sources such as spacecraft attitude.
This routine is expected to be refined so that the preliminary density from the LP-sweep can guide the Langmuir line search in the spectra, not yet implemented
   The tplot variables mvn_lpw_spec_act_hf and mvn_lpw_spec_act_hf must be loaded into tplot memory before running this routine. 
   There are additional variables that need to be loaded
   Presently this routine does not go and grab them if they are missing.

INPUTS:         
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
KEYWORDS:
 
EXAMPLE:
 mvn_lpw_prd_w_n


CREATED BY:   Laila Andersson  03-30-15
FILE:         mvn_lpw_prd_w_n.pro
VERSION:      2.1
LAST MODIFICATION:  
 2014-05-22   L. Andersson   sigificant update and working
 2014-12-01   T. McEnulty  updated sort flag of merged arrays, commented out flags that aren't working
 2014-12-09   T. McEnulty added a flag of 80 with a decimal for the sorting (0.1 for act and 0.2 for pas)
 2014-12-12   T. McEnulty updated dlimit
 2015-01-08 T. McEnulty and L. Andersson - updated limit and dlimit to make tplot output easier to see
2015 - 03-30   L. Andersson prep it for L2 production
2015 - 05-25   L. Andersson update for L2 production

ro mvn_lpw_prd_w_n,ext




rint,'Running: mvn_lpw_prd_w_n', ' ',ext
_routine    = SYSTIME(0) 
ers_prd     = 'version prd_w_n 2.1'  ; the version number of this routine

(See projects/maven/lpw/mvn_lpw_prd_w_n.pro)


MVN_LPW_PRD_W_SPEC

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_prd_w_spec

Takes LF, MF, and HF spectra (from act or pas) and combines them into one tplot spectra for L2-production.  
The error information and flag information is taking also into consideration information from other sources such as spacecraft atitude.
   The tplot variables mvn_lpw_act_E12 and mvn_lpw_pas_E12 must be loaded into tplot memory before running this routine. 
   There are additional variables that need to be loaded
   Presently this routine do not go an grab them if they are missing.

INPUTS:         
 - type                                    ;'act'or 'pas' which subcycle to work with 
   ext                                     ;'l1a' 'l1b' or 'l2'  what level of quality to produce ('l2' is full information to be archived)
   
 
EXAMPLE:
 mvn_lpw_prd_w_spec,type,ext


CREATED BY:   Laila Andersson  03-30-15
FILE:         mvn_lpw_prd_w_spec.pro
VERSION:      1.2
LAST MODIFICATION: 
 2014-05-22   L. Andersson   sigificant update and working
 2015-03-30   L. Andersson    update to make the firs L2 production

(See projects/maven/lpw/mvn_lpw_prd_w_spec.pro)


MVN_LPW_R_BLOCK16

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_r_block16
PURPOSE:
 Decomutater for the compression for block=16 reading the datafile as WORD
 This routine is called by the mvn_lpw_r_header.pro

USAGE:
  output=mvn_lpw_r_block16(data,ptr,nn_e,mask16,bin_c,index_arr,output)

INPUTS:
            data            this should be the unsigned array of the read in file
            ptr             this is which element to start with in the data array and updated ptr
            nn_e            this is which bit to start with based on element 'ptr' and array 'data' and update nn_e    
            mask16          this is to convert the value in the array 'data' to a 16-bit binary array  
            bin_c           this is an index array to convert the bit's to a integer 
            index_arr       this is an index array       
            output          the result of the read resultinf in an array with values form the array 'data'
                            the size of output depends on the size initiated, mod of 16 

OUTPUTS:
  hsbm - array of [1024,*] or [4096,*], one column for each hunk
  p    - number of hunks, intended to go into variable p20, p21, or p22 in mvn_lpw_r_header

KEYWORDS:
       

CREATED BY:   2011 
FILE: mvn_lpw_r_block16.pro
VERSION:   2.0
;LAST MODIFICATION: 2012 April 24 by: Laila 
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_r_block16.pro)


MVN_LPW_R_BLOCK16_BYTE

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_r_block16_byte
PURPOSE:
 Decomutater for the compression for block=16 reading the datafile as BYTE
 This routine is called by the mvn_lpw_r_header_l0.pro

USAGE:
  output=mvn_lpw_r_block16_byte(data,ptr,nn_e,mask16,bin_c,index_arr,output)

INPUTS:
            data            this should be the unsigned array of the read in file
            ptr             this is which element to start with in the data array and updated ptr
            nn_e            this is which bit to start with based on element 'ptr' and array 'data' and update nn_e   
            mask8           this is to convert the value in the array 'data' to a 8-bit binary array  
            bin_c           this is an index array to convert the bit's to a integer 
            index_arr       this is either 16 or 32. Set fix when calling on the routine
            edac_on:        constains information if errors was found in the de-compression
OUTPUTS
            output:         the result of the read resulting in an array with values form the array 'data'
  hsbm - array of [1024,*] or [4096,*], one column for each hunk
  p    - number of hunks, intended to go into variable p20, p21, or p22 in mvn_lpw_r_header

KEYWORDS:
       

CREATED BY:   2011 
FILE: mvn_lpw_r_block16_byte.pro
VERSION:   2.0
 Changes: this routine originally was for a word-array and modified for L0-data 2013 May 10 by Laila Andersson
;LAST MODIFICATION: 2014 Jannuary 05 by: Laila 
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_r_block16_byte.pro)


MVN_LPW_R_BLOCK32

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_r_block32
PURPOSE:
 Decomutater for the compression for block=32 reading the datafile as WORD
 This routine is called by the mvn_lpw_r_header.pro

USAGE:
  output=mvn_lpw_r_block32(data,ptr,nn_e,mask16,bin_c,index_arr,output)

INPUTS:
            data            this should be the unsigned array of the read in file
            ptr             this is which element to start with in the data array and updated ptr
            nn_e            this is which bit to start with based on element 'ptr' and array 'data' and update nn_e   
            mask16          this is to convert the value in the array 'data' to a 16-bit binary array  
            bin_c           this is an index array to convert the bit's to a integer 
            index_arr       this is an index array       
            output          the result of the read resultinf in an 128 point array with values form the array 'data'

OUTPUTS:
  hsbm - array of [1024,*] or [4096,*], one column for each hunk
  p    - number of hunks, intended to go into variable p20, p21, or p22 in mvn_lpw_r_header

KEYWORDS:
       

CREATED BY:   2011 
FILE: mvn_lpw_r_block32.pro
VERSION:   2.0
;LAST MODIFICATION: 2012 April 24 by: Laila 
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_r_block32.pro)


MVN_LPW_R_BLOCK32_BYTE

[Previous Routine] [Next Routine] [List of Routines]
FUNCTION:   mvn_lpw_r_block32_byte
PURPOSE:
 Decomutater for the compression for block=32  reading the data file as BYTE

USAGE:
  output=mvn_lpw_r_block32_byte(data,ptr,nn_e,mask16,bin_c,index_arr,output)

INPUTS:
            data            this should be the unsigned array of the read in file
            ptr             this is which element to start with in the data array and updated ptr
            nn_e            this is which bit to start with based on element 'ptr' and array 'data' and update nn_e   
            mask16          this is to convert the value in the array 'data' to a 16-bit binary array  
            bin_c           this is an index array to convert the bit's to a integer 
            index_arr       this is an index array       
            output          the result of the read resultinf in an 128 point array with values form the array 'data'

OUTPUTS:
  hsbm - array of [1024,*] or [4096,*], one column for each hunk
  p    - number of hunks, intended to go into variable p20, p21, or p22 in mvn_lpw_r_header

KEYWORDS:
       

CREATED BY:   2011 
FILE: mvn_lpw_r_block32.pro
VERSION:   1.1
; Changes: this routine originally was for a word-array and modified for L0-data 2013 May 10 by Laila Andersson
;LAST MODIFICATION: 2014 Jannuary 05 by: Laila 
Got the 'IF nd EQ 16 ' option correct

(See projects/maven/lpw/mvn_lpw_r_block32_byte.pro)


MVN_LPW_R_CLOCK_CHECK

[Previous Routine] [Next Routine] [List of Routines]
Program written by Chris Fowler on 2014-06-06 to check for clock jitter in the maven s/c clock. 

USAGE: mvn_lpw_r_clock_check, packet_name, packet_arr, SC, sc_clk1, sc_clk2

EXAMPLE: mvn_lpw_r_clock_check, 'PAS_HF', pkt_PAS_HF, SC, sc_clk1, sc_clk2 

INPUTS:

 packet_name: a string of the name of the packet you want to check: Acceptable packet names are:
             'HSK'
             'EUV'
             'SWP1'
             'SWP2'
             'ACT'
             'PAS'
             'ACT_LF'
             'ACT_MF'
             'ACT_HF'
             'PAS_LF'
             'PAS_MF'
             'PAS_HF'

 packet_arr: the array containing information for the desired packet. Acceptable packets are:
             pkt_HSK
             pkt_EUV
             pkt_SWP1
             pkt_SWP2
             pkt_ACT
             pkt_PAS
             pkt_ACT_LF
             pkt_ACT_MF
             pkt_ACT_HF
             pkt_PAS_LF
             pkt_PAS_MF
             pkt_PAS_HF
         
 SC: sequence counter: the array containing packet numbers in the order they are loaded, to check for missing packets.
         
 sc_clk1: MAVEN s/c second ticks
 sc_clk2: MAVEN s/c sub second ticks (note, these are s/c clock ticks, NOT decimal seconds)
 
 
OUTPUTS:
 sc_clk1 and sc_clk2 will be edited to correct for the ~0.5s clock jitter in the MAVEN s/c clock.
 
 
CREATED: Chris Fowler, 2014, June 6th 
 
 ### routine still under construction - need to add checks
 
 Version 1.0
 ;140718 clean up for check out L. Andersson
 ;140916: CF: fixed issue where timesteps just over the mod 4 limit (eg 16.000015 for EUV) were triggering false positives. Added in lower limit to correct this.
 ;150119: CF: added common block to store times that the clock jumps, so they can be saved for statistics.


(See projects/maven/lpw/mvn_lpw_r_clock_check.pro)


MVN_LPW_R_GROUP_HSBM

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_r_group_hsbm
PURPOSE:
Group together the data from several HSBM packets into one hunk of data 
 
Notes:
  A hunk is the data from several packets which all have the same timestamp.
  
  The program presumes that the packets forming one hunk are in order in comp_p, but not necessarily
  consecutive. 

  If the hunk is longer than expected, this is an error.

  If the hunk is shorter, it may not be an error. The program will attempt to pad the hunk, at the beginning
  if it is the first hunk (presuming that the first packet(s) did not make it into the data stream), at the
  end otherwise.

USAGE:
  mvn_lpw_r_group_hsbm,comp_t_,comp_p,length,hsbm,p,index_i

INPUTS:
  comp_t - array of doubles representing the timestamp, calculated as sec+subsec/2^16
  comp_p - array of pointers to data from HSBM packets
  length - expected length of each hunk of HSBM data, 1024 for LF and 4096 for MF and HF

OUTPUTS:
  hsbm - array of [1024,*] or [4096,*], one column for each hunk
  p    - number of hunks, intended to go into variable p20, p21, or p22 in mvn_lpw_r_header

KEYWORDS:
       

CREATED BY:   2011 
FILE: mvn_lpw_r_group_hsbm.pro
VERSION:   2.0
;LAST MODIFICATION: 
 ;140718 clean up for check out L. Andersson 

(See projects/maven/lpw/mvn_lpw_r_group_hsbm.pro)


MVN_LPW_R_HEADER

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_r_header
PURPOSE:
  Decomutater of the LPW telemetry data, this is the old mvn_lpw_r_header THIS IS NOT WORKING ON L0-files
          r_header orignal written by Corinne Vanatta and David Meyer;          
          This routine reads the data file as WORD
 This routine strips the packet headers off the data, and stores the data in various ways.
 The data is stored in one long structure 
 The routine also prints out how many of each tpye of packet are present in the file.
 filename: the name of the file the data is in
 output:   this is a dummy variable input, but output holds all the data for
           the subsequent plotting routines
 samplerate: Sample rate in Hz. Used to get time, as well as units on subsequent plots  
  
USAGE:
  mvn_lpw_r_header, filename, output,strip_pad = strip_pad, wrapper = wrapper, compressed=compressed, packet=packet

INPUTS:
       filename:      The full filename (including path) of a binary file containing 
                      zero or more LPW APID's.  

KEYWORDS:
       strip_pad:  Default? -not in use ?? test purpuses 
       wrapper:    Default? -not in use ?? test purpuses
       compressed: Default compressed. For test purpuses the data stream can be uncompressed by the FPGA.
       packet:     Which packets to read into memeory, default all packets Options: ['HSK','EUV','AVG','SPEC','HSBM','WPK']  

CREATED BY:   Laila Andersson  06-01-11
FILE: mvn_lpw_r_header.pro
VERSION:   2.0
LAST MODIFICATION:   04/20/13
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_r_header.pro)


MVN_LPW_R_HEADER_L0

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_r_header_l0
PURPOSE:
  Decomutater of the LPW telemetry data, THIS IS FOR L0-files, splitted files and gourn data use mvn_lpw_r_heared.pro
          r_header orignal written by Corinne Vanatta and David Meyer
          This routine reads the data file as BYTE
 This routine strips the packet headers off the data, and stores the data in various ways.
 The data is stored in one long structure
 The routine also prints out how many of each tpye of packet are present in the file.
 filename: the name of the file the data is in
 No WPK-packet will be in a L0-file and the data is always compressed
 SC gitter/clitch is corrected for
 More stricter rules to find the packets

USAGE:
  mvn_lpw_r_header, filename, output, packet=packet

INPUTS:
       filename:      The full filename (including path) of a binary file containing
                      zero or more LPW APID's.

KEYWORDS:
       packet:     Which packets to read into memeory, default all packets Options: ['HSK','EUV','AVG','SPEC','HSBM']

CREATED BY:   Laila Andersson  06-01-11
FILE: mvn_lpw_r_header_l0.pro
VERSION:   2.0
VERSION:   2.0
LAST MODIFICATION:  2019-12-30  L. Andersson
2019-12-30 bad sc clock is removed but was time limeted to ~jan 2020, this is now expanded on 
140718 FIs so that HSBM packets can be read
Added the correction features for the 0.5 SC clock gitter  (C Fowler)
Added a additional feature to find the packets using the SC variable (L. Andersson)
;140718 clean up for check out L. Andersson
2014-10-06: CF: 'packet' can now be uppper or lower input; mvn-lpw-load-file converts all to upper case.

(See projects/maven/lpw/mvn_lpw_r_header_l0.pro)


MVN_LPW_R_MASK

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE:   mvn_lpw_r_mask
PURPOSE:
      This procedure only defines different masks
       so that 8 and 16 bit numbers can be 
       quickly decomutated
       some of these masks are no longer used
       used by mvn_lpw_pkt_r_header.pro and mvn_lpw_pkt_r_header_l0.pro 

USAGE:
  mvn_lpw_r_mask,mask16,mask8,bin_c,index_arr,flip_8

INPUTS:
       r_mask:
       mask16:     array to convert 16-bite (word)
       mask8:      array to convert 8-bite (byte)
       bin_c:
       index_arr:
       flip_8: 

KEYWORDS:
       

CREATED BY:   Laila Andersson 17 august 2011 
FILE: mvn_lpw_r_mask.pro
VERSION:   2.0
;LAST MODIFICATION:   05/16/13
 ;140718 clean up for check out L. Andersson

(See projects/maven/lpw/mvn_lpw_r_mask.pro)


MVN_LPW_SAVE_L0

[Previous Routine] [List of Routines]
Wrapper to run mvn_lpw_load_l0 for a single day, and create tplot save files for each day. To be used at SSL to create local tplot
save files of LPW l0 data, to avoid the long load times.


date: string: 'yyyy-mm-dd': input date to load LPW L0 data for.

Output: routine saves a tplot file containing most useful LPW L0 data products, with the name 'mvn_lpw_tplot_l0_'+date+'.tplot'.

Not all LPW L0 data products are saved - the total file size is ~400 mb per day with all products. Only the most useful for comparison
with STATIC are saved to reduce file sizes.

(See projects/maven/lpw/mvn_lpw_save_l0.pro)