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

MMS_CONVERT_FLUX_UNITS

[Next Routine] [List of Routines]
Procedure:
  mms_convert_flux_unit

Purpose:
  Perform unit conversions for MMS particle data structures

Supported Units:
  flux   -   # / (cm^2 * s * sr * eV)
  eflux  -  eV / (cm^2 * s * sr * eV)
  df_cm  -  s^3 / cm^6
  df_km     -  s^3 / km^6

  'psd' is treated as 'df_km'
  
  'df' is no longer supported by these routines due to inconsistencies with THEMIS/other missions in SPEDAS

Calling Sequence:
  mms_convert_flux_units, dist, units=units, output=output

Arguments/Keywords:
  dist: Single MMS 3D particle data structure
  units: String specifying output units
  output: Set to named variable that will hold converted structure  
  

$LastChangedBy: egrimes $
$LastChangedDate: 2018-11-21 18:02:57 -0800 (Wed, 21 Nov 2018) $
$LastChangedRevision: 26169 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_convert_flux_units.pro $

(See projects/mms/particles/mms_convert_flux_units.pro)


MMS_GET_DIST

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_get_dist


Purpose:
  Retrieve particle distribution structures/pointers from data loaded
  into tplot. 


Calling Sequence:
  data = mms_get_dist( input_name [,trange=trange] [/times] [/structure] 
                       [,probe=probe] [,species=species] 
                       [,instrument=instrument] [,units=units] )


Input:
  input_name:  Name of tplot variable containing particle data (must be original name)
  single_time: Return a single time nearest to the time specified by single_time (supersedes trange and index)
  trange:  Optional two element time range
  times:  Flag to return array of full distribution sample times
  structure:  Flag to return structures instead of pointer to structures

  probe: specify probe if not present or correct in input_name 
  species:  specify particle species if not present or correct in input_name
                e.g. 'hplus', 'i', 'e'
  instrument:  specify instrument if not present or correct in input_name 
                  'hpca' or 'fpi'
  units:  (HPCA only) specify units of input data if not present or correct in input_name
              e.g. 'flux', 'df_cm'  (note: 'df_km' is in km, 'df_cm' is in cm)


Output:
  return value:  Pointer to structure array or structure array if /structure used.
                 Array of times if /times is used
                 0 for any error case



$LastChangedBy: egrimes $
$LastChangedDate: 2018-04-03 12:46:57 -0700 (Tue, 03 Apr 2018) $
$LastChangedRevision: 24987 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_get_dist.pro $

(See projects/mms/particles/mms_get_dist.pro)


MMS_PART_CONV_UNITS

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_part_conv_units

Purpose:
  simple wrapper around mms_convert_flux_units that can be used 
  as the 'units_procedure' in our 3d particle data structure


$LastChangedBy: egrimes $
$LastChangedDate: 2017-03-10 08:56:27 -0800 (Fri, 10 Mar 2017) $
$LastChangedRevision: 22934 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/projects/mms/particles/mms_convert_flux_units.pro $

(See projects/mms/particles/mms_part_conv_units.pro)


MMS_PART_DES_PHOTOELECTRONS

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

 PURPOSE:
         Loads and returns the FPI/DES photoelectron model based on stepper ID

 INPUT:
         dist_var: DES distribution data
         

 NOTES:
         see: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/2017JA024518

$LastChangedBy: egrimes $
$LastChangedDate: 2020-07-08 07:52:14 -0700 (Wed, 08 Jul 2020) $
$LastChangedRevision: 28860 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_des_photoelectrons.pro $

(See projects/mms/particles/mms_part_des_photoelectrons.pro)


MMS_PART_GETPAD

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

 PURPOSE:
         Quickly generate pitch angle spectrograms from multipad output from mms_part_getspec/mms_part_products

 NOTES:
         still a work in progress

 $LastChangedBy: egrimes $
 $LastChangedDate: 2018-09-20 15:04:07 -0700 (Thu, 20 Sep 2018) $
 $LastChangedRevision: 25838 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_getpad.pro $

(See projects/mms/particles/mms_part_getpad.pro)


MMS_PART_GETSPEC

[Previous Routine] [Next Routine] [List of Routines]
 Procedure:
         mms_part_getspec


 Purpose:
         This is a wrapper around mms_part_products that loads required 
         support data (if not already loaded), and optionally creates
         angular spectrograms with B-field and S/C ram directions specified 
         using symbols

 Keywords:
         probes: array of probes
         instrument: fpi or hpca
         species: depends on instrument:
             FPI: 'e' for electrons, 'i' for ions
             HPCA: 'hplus' for H+, 'oplus' for O+, 'heplus' for He+, 'heplusplus', for He++
         outputs: list of requested output types, 
             'energy' - energy spectrogram
             'phi' - azimuthal spectrogram
             'theta' - latitudinal spectrogram
             'gyro' - gyrophase spectrogram
             'pa' - pitch angle spectrogram
             'multipad' - pitch angle spectrogram at every energy 
                 (multi-dimensional PAD variable, to be used by mms_part_getpad)
             'moments' - distribution moments (density, velocity, etc.) 
         add_bfield_dir: add B-field direction (+, -) to the angular spectrograms (phi, theta)
         add_ram_dir: add S/C ram direction (X) to the angular spectrograms (phi, theta)
         dir_interval: number of seconds between B-field and S/C ram direction symbols on angular spectrogram plots
         
         subtract_bulk: subtract the bulk velocity prior to doing the calculations
         subtract_error: subtract the distribution error prior to doing the calculations (FPI only, currently)
         subtract_spintone: subtract the spin-tone from the velocity vector prior to bulk velocity subtraction (FPI versions 3.2 and later only)
         
         photoelectron_corrections: *experimental* photoelectron corrections for DES; enabled by default for DES moments; you can disable with photoelectron_corrections=0
         
     The following are found by default for the requested instrument/probe/data_rate; use these keywords 
     to override the defaults:
         mag_name:  Use a different tplot variable containing magnetic field data for moments and FAC transformations
         pos_name:  Use a different tplot variable containing spacecraft position for FAC transformations
         vel_name:  Use a different tplot variable containing velocity data in km/s when subtracting the bulk velocity
  
 Notes:
         Updated to automatically center HPCA measurements if not specified already, 18Oct2017
         
         Updated to automatically correct FPI-DES moments for photoelectrons, 20Sept2018
         
         FPI-DES internal photoelectrons are corrected using Dan Gershman's photoelectron model; see the following for details: 
             Spacecraft and Instrument Photoelectrons Measured by the Dual Electron Spectrometers on MMS
             https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/2017JA024518
             
         Spacecraft photoelectrons are corrected in moments_3d
         
$LastChangedBy: egrimes $
$LastChangedDate: 2019-02-26 11:27:36 -0800 (Tue, 26 Feb 2019) $
$LastChangedRevision: 26707 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_getspec.pro $

(See projects/mms/particles/mms_part_getspec.pro)


MMS_PART_ISEE3D

[Previous Routine] [Next Routine] [List of Routines]
 Procedure:
         mms_part_isee3d

 Purpose:
         This is a wrapper around isee_3d that loads required
         support data and plots the distribution

 Keywords:
         probe: MMS s/c # to create the 2D slice for
         instrument: fpi or hpca
         species: depends on instrument:
             FPI: 'e' for electrons, 'i' for ions
             HPCA: 'hplus' for H+, 'oplus' for O+, 'heplus' for He+, 'heplusplus', for He++
         level: level of the data you'd like to plot
         data_rate: data rate of the distribution data you'd like to plot
         trange: two-element time range over which data will be averaged (optional, ignored if 'time' is specified)
         spdf: load the data from the SPDF instead of the LASP SDC

 Notes:
         This routine always centers the distribution/moments data

$LastChangedBy: egrimes $
$LastChangedDate: 2019-04-30 09:44:09 -0700 (Tue, 30 Apr 2019) $
$LastChangedRevision: 27150 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_isee3d.pro $

(See projects/mms/particles/mms_part_isee3d.pro)


MMS_PART_PRODUCTS

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_part_products

Purpose:
  Generate spectra and moments from 3D MMS particle data.


Data Products:
  'energy' - energy spectrogram
  'phi' - azimuthal spectrogram 
  'theta' - latitudinal spectrogram
  'gyro' - gyrophase spectrogram
  'pa' - pitch angle spectrogram
  'multipad' - pitch angle spectrogram at each energy (multi-dimensional tplot variable, 
       you'll need to use mms_part_getpad to generate PADs at various energies)
  'moments' - distribution moments (density, velocity, etc.)


Calling Sequence:
  mms_part_products, tplot_name [,trange=trange] [outputs=outputs] ...


Example Usage:
  -energy, phi, and theta spectrograms
    mms_part_products, 'mms2_des_dist_brst', outputs='phi theta energy'

  -field aligned spectrograms, limited time range
    mms_part_products, 'mms2_des_dist_brst', output='pa gyro', $
                       pos_name = 'mms2_defeph_pos', $
                       mag_name = 'mms2_fgm_bvec'

  -limit range of input data (gyro and pa limits do not affect phi/theta spectra)
    mms_part_products, 'mms2_des_dist_brst', output = 'energy pitch', $
                       energy = [15,1e5], $  ;eV
                       pitch = [45,135]

Arguments:
  tplot_name:  Name of the tplot variable containing MMS 3D particle distribution data


Input Keywords:
  trange:  Two element time range [start,end]
  outputs:  List of requested outputs, array or space separated list, default='energy'

  energy:  Two element energy range [min,max], in eV
  phi:  Two element phi range [min,max], in degrees, spacecraft spin plane
  theta:  Two element theta range [min,max], in degrees, latitude from spacecraft spin plane
  pitch:  Two element pitch angle range [min,max], in degrees, magnetic field pitch angle
  gyro:  Two element gyrophase range [min,max], in degrees, gyrophase  

  mag_name:  Tplot variable containing magnetic field data for moments and FAC transformations 
  pos_name:  Tplot variable containing spacecraft position for FAC transformations
  sc_pot_name:  Tplot variable containing spacecraft potential data for moments corrections
  vel_name:  Tplot variable containing velocity data in km/s for use with /subtract_bulk
    
  units:  Specify units of output variables.  Must be 'eflux' to calculate moments.
            'flux'   -   # / (cm^2 * s * sr * eV)
            'eflux'  -  eV / (cm^2 * s * sr * eV)  <default>
            'df_cm'  -  s^3 / cm^6
            'df_km'     -  s^3 / km^6

  fac_type:  Select the field aligned coordinate system variant.
             Existing options: "phigeo,mphigeo, xgse"
  regrid:  Two element array specifying the resolution of the field-aligned data.
           [n_gyro,n_pitch], default is [32,16]
  no_regrid:  (experimental) Skip regrid step when converting to field aligned coordinates.
              
  
  suffix:  Suffix to append to output tplot variable names 

  probe:  Specify probe designation when it cannot be parsed from tplot_name
  species:  Specify species when it cannot be parsed from tplot_name
  instrument:  Specify instrument when it cannot be parsed from tplot_name
  input_units:  (HPCA only) Specify units of input data when they cannot be parsed from tplot_name

  start_angle:  Set a start angle for azimuthal spectrogram y axis
    
  datagap:  Setting for tplot variables, controls how long a gap must be before it is drawn. 
            (can also manually degap)
  subtract_bulk:  Flag to subtract bulk velocity (experimental)

  display_object:  Object allowing dprint to export output messages

  
Output Keywords:
  tplotnames:  List of tplot variables that were created
  get_data_structures:  Set to named variable to return structures directly when
                        generating field aligned outputs.  This may considerably
                        slow the process!
  error:  Error status flag for calling routine, 1=error 0=success


Notes: 
  -See warning above in purpose description!
  
  -FPI-DES photoelectrons are corrected using Dan Gershman's photoelectron model; see the following for details:
     Spacecraft and Instrument Photoelectrons Measured by the Dual Electron Spectrometers on MMS
     https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/2017JA024518
     
  -Note that there may still be slight differences between the PGS moments and the official moments released by the team.
     The official moments released by the team are the scientific
     products you should use in your analysis.


$LastChangedBy: egrimes $
$LastChangedDate: 2019-02-27 14:01:22 -0800 (Wed, 27 Feb 2019) $
$LastChangedRevision: 26718 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_products.pro $

(See projects/mms/particles/mms_part_products.pro)


MMS_PART_SLICE2D

[Previous Routine] [Next Routine] [List of Routines]
 Procedure:
         mms_part_slice2d

 Purpose:
         This is a wrapper around spd_slice2d and spd_slice2d_plot that loads required
         support data, creates and plots the slice

 Keywords:
         PROBE: MMS s/c # to create the 2D slice for
         INSTRUMENT: fpi or hpca
         SPECIES: depends on instrument:
             FPI: 'e' for electrons, 'i' for ions
             HPCA: 'hplus' for H+, 'oplus' for O+, 'heplus' for He+, 'heplusplus', for He++
         LEVEL: level of the data you'd like to plot
         DATA_RATE: data rate of the distribution data you'd like to plot
         TIME: time of the 2D slice
         TRANGE: two-element time range over which data will be averaged (optional, ignored if 'time' is specified)
         SPDF: load the data from the SPDF instead of the LASP SDC
         OUTPUT: returns the computed slice
         UNITS: units of the slice (default is df_cm - other options include 'df_km', 'flux', 'eflux')
         
         TRANGE: Two-element time range over which data will be averaged. (string or double)
         TIME: Time at which the slice will be computed. (string or double)
           SAMPLES: Number of nearest samples to TIME to average. (int/double)
             If neither SAMPLES nor WINDOW are specified then default=1.
           WINDOW: Length in seconds from TIME over which data will be averaged. (int/double)
             CENTER_TIME: Flag denoting that TIME should be midpoint for window instead of beginning.

           SUM_SAMPLES: Flag denoting that the data should be summed over the requested trange rather than averaged

         THREE_D_INTERP: Flag to use 3D interpolation method (described below)
         TWO_D_INTERP: Flag to use 2D interpolation method (described below)
         GEOMETRIC: Flag to use geometric interpolation method (described below)
  
         RESOLUTION: Integer specifying the resolution along each dimension of the
              slice (defaults:  2D/3D interpolation: 150, geometric: 500)
         SMOOTH: An odd integer >=3 specifying the width of a smoothing window in #
              of points.  Smoothing is applied to the final plot using a gaussian
              convolution. Even entries will be incremented, 0 and 1 are ignored.

         ENERGY: Flag to plot data against energy (in eV) instead of velocity.
         LOG: Flag to apply logarithmic scaling to the radial measure (i.e. energy/velocity).
              (on by default if /ENERGY is set)

         ERANGE: Two element array specifying the energy range to be used in eV.

         THETARANGE: (2D interpolation only)
              Angle range, in degrees [-90,90], used to calculate slice.
              Default = [-20,20]; will override ZDIRRANGE.
         ZDIRRANGE: (2D interpolation only)
             Z-Axis range, in km/s, used to calculate slice.
             Ignored if called with THETARANGE.

         AVERAGE_ANGLE: (geometric interpolation only)
                 Two element array specifying an angle range over which
                 averaging will be applied. The angle is measured
                 from the slice plane and about the slice's horizontal axis;
                 positive in the right handed direction. This will
                 average over all data within that range.

                 Note: for the default rotation='xy', the angle is measured from the XY
                 slice plane and about the x-axis
                    e.g. rotation='xy', average_angle=[-25,25] will average data within 25 degrees
                         of the XY slice plane about it's x-axis
                    or
                         rotation='yz', average_angle=[-25,25] will average data within 25 degrees
                         of the YZ slice plane about it's y-axis

         SUM_ANGLE: (geometric interpolation only)
                 Two element array specifying an angle range over which
                 summing will be applied. The angle is measured
                 from the slice plane and about the slice's horizontal axis;
                 positive in the right handed direction. This will
                 sum over all data within that range.

                 Note: for the default rotation='xy', the angle is measured from the XY
                 slice plane and about the x-axis
                    e.g. rotation='xy', sum_angle=[-25,25] will sum data within 25 degrees
                         of the XY slice plane about it's x-axis
                    or
                         rotation='yz', sum_angle=[-25,25] will sum data within 25 degrees
                         of the YZ slice plane about it's y-axis

         DETERM_TOLERANCE:  tolerance of the determinant of the custom rotation matrix
           (maximum acceptable difference from determ(C)=1 where C is the
           user's custom rotation matrix); default is 1e-6
           
         SUBTRACT_BULK: subtract the bulk velocity prior to doing the calculations
         PERP_SUBTRACT_BULK: subtract the perpendicular bulk velocity in field-aligned coordinates
                 i.e., finds the perp velocity by rotating into the 'bv' system, then sets the X component 
                 of velocity to zero, and inverse, then subtracts this velocity instead of the full bulk
                 velocity

Orientation Keywords:
         ROTATION: Aligns the data relative to the magnetic field and/or bulk velocity.
            This is applied after the CUSTOM_ROTATION. (BV and BE are invariant
            between coordinate systems)

            'BV':  The x axis is parallel to B field; the bulk velocity defines the x-y plane
            'BE':  The x axis is parallel to B field; the B x V(bulk) vector defines the x-y plane
            'xy':  (default) The x axis is along the data's x axis and y is along the data's y axis
            'xz':  The x axis is along the data's x axis and y is along the data's z axis
            'yz':  The x axis is along the data's y axis and y is along the data's z axis
            'xvel':  The x axis is along the data's x axis; the x-y plane is defined by the bulk velocity
            'perp':  The x axis is the bulk velocity projected onto the plane normal to the B field; y is B x V(bulk)
            'perp_xy':  The data's x & y axes are projected onto the plane normal to the B field
            'perp_xz':  The data's x & z axes are projected onto the plane normal to the B field
            'perp_yz':  The data's y & z axes are projected onto the plane normal to the B field
            
         CUSTOM_ROTATION: Applies a custom rotation matrix to the data.  Input may be a
                   3x3 rotation matrix or a tplot variable containing matrices.
                   If the time window covers multiple matrices they will be averaged.
                   This is applied before other transformations

         SLICE_X & SLICE_NORM: These keywords respectively specify the slice plane's
                        x-axis and normal within the coordinates specified by
                        CUSTOM_ROTATION and ROTATION. Both keywords take
                        3-vectors as input. (See note below)

                        If SLICE_X is not specified then the given coordinate's
                        x-axis will be used. If SLICE_X is not perpendicular to
                        the normal it's projection onto the slice plane will be used.
                        An error will be thrown if no projection exists.

                        If SLICE_NORM is not specified then the given coordinate's
                        z-axis will be used (slice along by x-y plane in those
                        coordinates).

              examples:
                Slice along the data's x-z plane:
                  ROTATION='xz'

                Slice plane's x axis is GSM x and y is in the direction of the bulk velocity:
                  CUSTOM_ROTATION='my_gsm_tvar', ROTATION='xvel'

                Slice is perpendicular to "tvar1" and x axis is defined by projection of "tvar2"
                  SLICE_NORM='tvar1', SLICE_X='tvar2'

       NOTE: Update at 06/04/2018 - The SLICE_X & SLICE_NORM are defined after CUSTOM_ROTATION
         but before the ROTATION.

        DISPLACEMENT: Vector. New center of the coordinate system.
              example:
                Slice at the point x=0.5, y = 0.5 and z=0.1.
                DISPLACEMENT = [0.5, 0.5. 0.1]

Plotting Keywords:
        LEVELS: Number of color contour levels to plot (default is 60)
        OLINES: Number of contour lines to plot (default is 0)
        CONTOURS_OPLOT: Boolean indicating to only plot contours, not the data.
           this is especially useful if you're interested in plotting
           2-d or 3-d interpolated contours onto plots using geometric
           interpolation; requires an already existing 2d slice plot
        ZLOG: Boolean indicating logarithmic contour scaling (on by default)
        ECIRCLE: Boolean to plot circle(s) designating min/max energy
           from distribution (on by default)
        SUNDIR: Boolean to plot the projection of scaled sun direction (black line).
          Requires GET_SUN_DIRECTION set with spd_dist_array.
        PLOTAXES: Boolean to plot x=0 and y=0 axes (on by default)
        PLOTBULK: Boolean to plot projection of bulk velocity vector (red line).
            (on by default)
        PLOTORIGIN: Boolean to plot a new origin at the bulk velocity and/or sun location
              instead of plotting the projection
        PLOTBFIELD: Boolean to plot projection of scaled B field (cyan line).
              Requires B field data to be loaded and specified to
              spd_slice2d with mag_data keyword.

        TITLE: String used as plot's title
        SHORT_TITLE: Flag to only use time range and # of samples for title
        CLABELS: Boolean to annotate contour lines.
        CHARSIZE: Specifies character size of annotations (1 is normal)
        [XYZ]RANGE: Two-element array specifying x/y/z axis range.
        [XYZ]TICKS: Integer(s) specifying the number of ticks for each axis
        [XYZ]PRECISION: Integer specifying annotation precision (sig. figs.).
                  Set to zero to truncate printed values to integers.
        [XYZ]STYLE: Integer specifying annotation style:
             Set to 0 (default) for style to be chosen automatically.
             Set to 1 for decimal annotations only ('0.0123')
             Set to 2 for scientific notation only ('1.23e-2')
        [B,V,SUN]_COLOR: Specify the color of the corresponding support vector.
                   (e.g. "b_color=0", see IDL graphics documentation for options)
        NOCOLORBAR: Suppress z axis color bar.

        PLOTSIZE: The size of the plot in device units (usually pixels)
            (Not implemented for postscript).

        CUSTOM:  Flag that to disable automatic window creation and allow
           user-controlled plots.

        BACKGROUND_COLOR_INDEX: Integer (0-255) specifying a custom background color
           where data = 0.0

        BACKGROUND_COLOR_RGB: 3D array of integers (0-255) representing RGB values
            of the background color where data == 0.0; this keyword modifies the
            current color table to include this color at index = 7

Exporting keywords:
        EXPORT: String designating the path and file name of the desired file.
          The plot will be exported to a PNG image by default.
        EPS: Boolean indicating that the plot should be exported to
          encapsulated postscript.
       
Interpolation Methods:

   3D Interpolation:
     The entire 3-dimensional distribution is linearly interpolated onto a
     regular 3d grid and a slice is extracted from the volume.

   2D Interpolation:
     Datapoints within the specified theta or z-axis range are projected onto
     the slice plane and linearly interpolated onto a regular 2D grid.

   Geometric (default):
     Each point on the plot is given the value of the bin it intersects.
     This allows bin boundaries to be drawn at high resolutions.
 
 Examples:
         You can find examples in the following crib sheets:
         
         mms/examples/advanced/mms_slice2d_fpi_crib.pro
         mms/examples/advanced/mms_slice2d_hpca_crib.pro

 Notes:
         This routine always centers the distribution/moments data
         
         Default interpolation changed to geometric (from 3D), egrimes, 27Feb2020
           (requested by the FPI team at last year's GEM)
         
$LastChangedBy: egrimes $
$LastChangedDate: 2020-05-05 13:43:39 -0700 (Tue, 05 May 2020) $
$LastChangedRevision: 28669 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_part_slice2d.pro $

(See projects/mms/particles/mms_part_slice2d.pro)


MMS_PGS_CLEAN_DATA

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_clean_data


Purpose:
  Sanitize mms FPI/HPCA data structures for use with
  mms_part_products.  Excess fields will be removed and 
  field names conformed to standard.  

  Reforms energy by theta by phi to energy by angle
  Converts units

Input:
  data_in: Single combined particle data structure


Output:
  output: Sanitized output structure for use within mms_part_products.


Notes:
  -not much should be happening here since the combined structures 
   are already fairly pruned
  -use for fpi and hpca for now


$LastChangedBy: egrimes $
$LastChangedDate: 2017-06-30 07:36:07 -0700 (Fri, 30 Jun 2017) $
$LastChangedRevision: 23532 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_clean_data.pro $

(See projects/mms/particles/mms_pgs_clean_data.pro)


MMS_PGS_CLEAN_SUPPORT

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_clean_support


Purpose:
  Transform and/or interpolate support data to match the particle data.


Arguments:
  times: Array of sample times for particledata
  probe: String specifying the spacecraft


Input Keywords
  mag_name: String specifying a tplot variable containing magnetic field data
  sc_pot_name: String specifying a tplot variable containing spacecraft potential data
  vel_name: String specifying a tplot variable containing velocity data in km/s


Output Keywords:
  mag_out: Array of magnetic field vectors corresponding to TIMES
  sc_pot_out: Array of spacecraft potential data corresponding to TIMES
  vel_out: Array of velocity vectors corresponding to TIMES

  
Notes:
    

$LastChangedBy: egrimes $
$LastChangedDate: 2018-08-07 13:36:40 -0700 (Tue, 07 Aug 2018) $
$LastChangedRevision: 25597 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_clean_support.pro $

(See projects/mms/particles/mms_pgs_clean_support.pro)


MMS_PGS_MAKE_E_SPEC

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_make_e_spec

Purpose:
  Builds energy spectrogram from simplified particle data structure.


Input:
  data: single sanitized data structure
  

Input/Output:
  spec: The spectrogram (ny x ntimes)
  yaxis: The y axis (ny OR ny x ntimes)
  
  -Each time this procedure runs it will concatenate the sample's data
   to the SPEC variable.
  -Both variables will be initialized if not set
  -The y axis will remain a single dimension until a change is detected
   in the data, at which point it will be expanded to two dimensions.


Notes:


$LastChangedBy: egrimes $
$LastChangedDate: 2018-04-24 16:23:53 -0700 (Tue, 24 Apr 2018) $
$LastChangedRevision: 25106 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_make_e_spec.pro $

(See projects/mms/particles/mms_pgs_make_e_spec.pro)


MMS_PGS_MAKE_FAC

[Previous Routine] [Next Routine] [List of Routines]
PROCEDURE: mms_pgs_make_fac
PURPOSE:
  Generate the field aligned coordinate transformation matrix
  Specifically
  #1 guarantee mag_data is in dsl and pos data is in  gei
  #2 guarantee that time grid matches particle data

Inputs(required):

Outputs:

Keywords:

Notes:
  Needs to be vectorized because mms_cotrans is waaaay too slow if fed single vectors at a time
  If an error occurs fac_output will be undefined on return

$LastChangedBy: egrimes $
$LastChangedDate: 2018-07-02 15:28:15 -0700 (Mon, 02 Jul 2018) $
$LastChangedRevision: 25430 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_make_fac.pro $

(See projects/mms/particles/mms_pgs_make_fac.pro)


MMS_PGS_MAKE_MULTIPAD_SPEC

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_make_multipad_spec

Purpose:
  Builds theta (latitudinal) spectrogram from simplified particle data structure.
  this is like mms_pgs_make_theta_spec, except it's per energy and this routine expects
  'spec' to be sent already initialized


Input:
  data: single sanitized data structure


Input/Output:
  spec: The spectrogram (ntimes x n_energy x ny)
  yaxis: The y axis (ny OR ny x ntimes)
  colatitude: Flag to specify that data is in colatitude
  
  -Each time this procedure runs it will concatenate the sample's data
   to the SPEC variable.
  -Both variables will be initialized if not set
  -The y axis will remain a single dimension until a change is detected
   in the data, at which point it will be expanded to two dimensions.


Notes:
 forked from mms_pgs_make_theta_spec by egrimes on 23 April 2018


$LastChangedBy: egrimes $
$LastChangedDate: 2017-06-30 07:36:07 -0700 (Fri, 30 Jun 2017) $
$LastChangedRevision: 23532 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/projects/mms/particles/mms_pgs_make_theta_spec.pro $

(See projects/mms/particles/mms_pgs_make_multipad_spec.pro)


MMS_PGS_MAKE_PHI_SPEC

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_make_phi_spec

Purpose:
  Builds phi (longitudinal) spectrogram from simplified particle data structure.


Input:
  data: single sanitized data structure
  

Input/Output:
  spec: The spectrogram (ny x ntimes)
  yaxis: The y axis (ny OR ny x ntimes)
  
  -Each time this procedure runs it will concatenate the sample's data
   to the SPEC variable.
  -Both variables will be initialized if not set
  -The y axis will remain a single dimension until a change is detected
   in the data, at which point it will be expanded to two dimensions.


Notes:

$LastChangedBy: egrimes $
$LastChangedDate: 2017-06-30 07:36:07 -0700 (Fri, 30 Jun 2017) $
$LastChangedRevision: 23532 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_make_phi_spec.pro $

(See projects/mms/particles/mms_pgs_make_phi_spec.pro)


MMS_PGS_MAKE_THETA_SPEC

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_make_theta_spec

Purpose:
  Builds theta (latitudinal) spectrogram from simplified particle data structure.


Input:
  data: single sanitized data structure


Input/Output:
  spec: The spectrogram (ny x ntimes)
  yaxis: The y axis (ny OR ny x ntimes)
  colatitude: Flag to specify that data is in colatitude
  
  -Each time this procedure runs it will concatenate the sample's data
   to the SPEC variable.
  -Both variables will be initialized if not set
  -The y axis will remain a single dimension until a change is detected
   in the data, at which point it will be expanded to two dimensions.


Notes:



$LastChangedBy: egrimes $
$LastChangedDate: 2017-06-30 07:36:07 -0700 (Fri, 30 Jun 2017) $
$LastChangedRevision: 23532 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_make_theta_spec.pro $

(See projects/mms/particles/mms_pgs_make_theta_spec.pro)


MMS_PGS_MAKE_TPLOT

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_make_tplot

Purpose:
  Create tplot variable with standard spectrogram settings.


Input:
  name: name of new tplot variable to create
  x: x axis (time)
  v1: first dimension
  v2: second dimension
  z: z axis (data)
  _extra: Any other keywords used will be passed to tplot and
          set in the dlimits of the new variable.
          (e.g. ylog=1 to set logarithmic y axis)


Output:
  Creates a tplot variable.
  tplotnames=tplotnames : Concatenates the name of the new variable onto tnames argument

Notes:
  Forked from spd_pgs_make_tplot, on 3/13/2018, to support creating multi-dimensional tplot variables
  in mms_part_products_new


$LastChangedBy: egrimes $
$LastChangedDate: 2018-03-20 10:00:31 -0700 (Tue, 20 Mar 2018) $
$LastChangedRevision: 24910 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_make_tplot.pro $

(See projects/mms/particles/mms_pgs_make_tplot.pro)


MMS_PGS_SPLIT_HPCA

[Previous Routine] [Next Routine] [List of Routines]
Procedure:
  mms_pgs_split_hpca

Purpose:
  Split hpca elevation bins so that dphi == dtheta.
  Combined with updates to spectra generation code this should allow
  the regrid step for FAC spectra to be skipped in mms_part_products.
   
Input:
  data:  Sanitized hpca data structure

Output:
  output:  New structure with theta bins split in two
           (2x data points in angle dimension)

Notes:


$LastChangedBy: egrimes $
$LastChangedDate: 2017-06-30 07:36:07 -0700 (Fri, 30 Jun 2017) $
$LastChangedRevision: 23532 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_pgs_split_hpca.pro $

(See projects/mms/particles/mms_pgs_split_hpca.pro)


MMS_SLICE1D_PLOT_FPI

[Previous Routine] [List of Routines]
 PROCEDURE:
  spd_slice1d_plot with FPI modifications by Simon Wellenzohn

 PURPOSE:
   Create 1D plot from a 2D particle slice

   This version allows you to plot the integral over a certain angle section (white lines in the plot) of the 2D distribution.
   The X axis of the plot created is a histogram with the width of the columns representing the energy channels of FPI.

 EXAMPLES:
 
  MMS> mms_slice1d_plot_fpi, slice, alpha=[0,0], width=[30,30], xrange=[-2500, 2500], yrange=[1e-25, 1d-22], export=export_dir


 INPUT:
  slice: slice returned by spd_slice2d
  alpha: angle in degrees to the x axis marking the center of the circle sector given for both the - and + x side
  width: angle in degrees which sets the width of the circle sector given for both - and + x side
  xrange: sets the xrange in km/s
  yrange: sets y range in integrated flux
  export: export path as string

 NOTES:
    minor modifications by egrimes, Jan 2020
 

 $LastChangedBy: egrimes $
 $LastChangedDate: 2020-01-28 17:59:08 -0800 (Tue, 28 Jan 2020) $
 $LastChangedRevision: 28247 $
 $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_0/projects/mms/particles/mms_slice1d_plot_fpi.pro $

(See projects/mms/particles/mms_slice1d_plot_fpi.pro)