This page was created by the IDL library routine
mk_html_help2.
Last modified: Sun Feb 16 18:16:23 2025.
INPUT: energylist is a list of energies (keV)
alt is altitude in km (20<alt<40)
mlat is magnetic latitude in degrees (50<|mlat|<90)
OUTPUT: returns a list of counts/s/kev corresponding to energylist
returns -1 for input out of range
METHOD: based on an empirical model derived from previous flights
model is ok between 20 and 7000 keV
background is primarily two power law components
these turn over at low energy
the 511 line contributes several features
prevent underflows by avoiding exp(-huge number)
CALLS: none
EXAMPLE: result = brl_makebkgd([10,20,50,100],63,33.2)
calculates bkgd differential count rate at the
4 specified energies for a detector at mag lat
63 degrees and altitude 33.2 km.
FUTURE WORK:
needs to be compared with BARREL test flights
REVISION HISTORY:
works, tested mm/18 Dec 2012
(See projects/barrel/barrel_sp_v3.7/barrel_make_model_bkg.pro)
NAME: barrel_selecttimes.pro DESCRIPTION: use mouse to select a time interval from a lightcurve already plotted REQUIRED INPUTS: x,y x and y values of data plotted (lightcurve) OPTIONAL INPUTS: color color code for overplotting selected data OUTPUTS: subset locations of selected data in the array subsetsize length of array "subset" CALLS: cursor NOTES: STATUS: ok TO BE ADDED: might possibly add a mouse-free option later REVISION HISTORY: Version 3.0 DMS 9/9/13 change since version 2.9: removed xplot start and end (not used)
(See projects/barrel/barrel_sp_v3.7/barrel_selecttimes.pro)
NAME: barrel_sp_fitgrid1.pro
DESCRIPTION: BARREL low-level spectral folding routine, method 1
(analytic spectral model, single drm)
REQUIRED INPUTS:
subspec background subtracted count spectrum, cts/keV
subspecerr its error bars
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
drm response matrix for correct payload altitude and chosen PID
of electrons
phmean energy bin centers for the photons dimension
phwidth energy bin widths for the photons dimension
usebins which energy channels to use in minimizing chisquare
startpar Starting value of spectral parameter
startnorm Starting value of spectral normalization
points Number of points on each side of starting values to test
scaling Range around the starting values to test -- for example,
points=2 and scaling=1.5 means that the values tested are
x/1.5, x/1.25, x, x*1.25, x*1.5
OPTIONAL INPUTS:
none
OUTPUTS:
bestpar best-fit value of the spectral parameter
bestnorm best-fit value of the normalization parameter
bestparn array location of bestpar
bestnormn array location of bestnorm
modvals values of the best-fit function at the data bin centers
chiarray array of chi-square values
bestchi lowest chi-square value
pararray array of spectral parameter values
normarray array of normalization parameter values
CALLS: None.
STATUS: Passed early test on artificial data
TO BE ADDED: N/A
REVISION HISTORY:
Version 1.0 DMS 6/23/12 as barrel_fitgrid
Version 2.0 DMS 7/18/12 added "usebins" -- functionality was missing
before -- renamed "bestvals" to "modvals"
Version 2.4 DMS 8/26/12 added support for monoenergetic spectrum
removed redundant routine ID in "message"
11/12/13 insist on only one value of bestparn, etc.
Version 3.4 DMS 4/17/14 fixed modvals and foldvals to be /chan
instead of /keV for model=2 (monoenergetic)
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fitgrid1.pro)
NAME: barrel_sp_fitgrid2.pro
DESCRIPTION: BARREL low-level spectral folding routine, method 2
(single model file, single drm)
REQUIRED INPUTS:
subspec background subtracted count spectrum, cts/keV
subspecerr its error bars
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
drm response matrix for correct payload altitude and chosen PID
of electrons
phmean energy bin centers for the photons dimension
phwidth energy bin widths for the photons dimension
usebins which energy channels to use in minimizing chisquare
startpar Starting value of spectral parameter
startnorm Starting value of spectral normalization
points Number of points on each side of starting values to test
scaling Range around the starting values to test -- for example,
points=2 and scaling=1.5 means that the values tested are
x/1.5, x/1.25, x, x*1.25, x*1.5
OPTIONAL INPUTS:
none
OUTPUTS:
bestpar best-fit value of the spectral parameter
bestnorm best-fit value of the normalization parameter
bestparn array location of bestpar
bestnormn array location of bestnorm
modvals values of the best-fit function at the data bin centers
chiarray array of chi-square values
bestchi lowest chi-square value
pararray array of spectral parameter values
normarray array of normalization parameter values
CALLS: None.
STATUS: Passed early test on artificial data
TO BE ADDED: N/A
REVISION HISTORY:
Version 1.0 DMS 7/24/12 derived from barrel_fitgrid1
11/12/13 insist on only one value of bestparn, etc.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fitgrid2.pro)
NAME: barrel_sp_fitgrid3.pro
DESCRIPTION: BARREL low-level spectral folding routine, method 3
( two file-based spectral shapes, single drm)
REQUIRED INPUTS:
subspec background subtracted count spectrum, cts/keV
subspecerr its error bars
modelspec1 first spectral component (at all energies)
modelspec2 second spectral component
drm response matrix for correct payload altitude and chosen PID
of electrons
phmean energy bin centers for the photons dimension
phwidth energy bin widths for the photons dimension
usebins which energy channels to use in minimizing chisquare
startnorm1 Starting value of normalization of 1st component
startnorm2 Starting value of normalization of 2nd component
points Number of points on each side of starting values to test
scaling Range around the starting values to test -- for example,
points=2 and scaling=1.5 means that the values tested are
x/1.5, x/1.25, x, x*1.25, x*1.5
OPTIONAL INPUTS:
none
OUTPUTS:
bestnorm1 best-fit value of the first normalization
bestnorm2 best-fit value of the second normalization
bestnorm1n array location of bestnorm1
bestnorm2n array location of bestnorm2
modvals1 values of the fit function at the centers of the energy bins (first component)
modvals2 values of the fit function at the centers of the energy bins (second component)
chiarray array of chi-square values
bestchi lowest chi-square value
norm1array array of first normalization parameter values
norm2array array of second normalization parameter values
CALLS: None.
STATUS: Passed early test on artificial data
TO BE ADDED: N/A
REVISION HISTORY:
First version with release 2.3, 8/26/12
11/12/13 insist on only one value of bestparn, etc.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fitgrid3.pro)
NAME: barrel_sp_fitgrid4.pro
DESCRIPTION: BARREL low-level spectral folding routine for method 4
(analytic spectral function, dual DRMs)
REQUIRED INPUTS:
subspec background subtracted count spectrum, cts/keV
subspecerr its error bars
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
drm response matrix for correct payload altitude and chosen PID
of electrons
drm2 second response matrix; interpolation between these two is
the last fit parameter
phmean energy bin centers for the photons dimension
phwidth energy bin widths for the photons dimension
usebins which energy channels to use in minimizing chisquare
startpar Starting value of spectral parameter
startnorm Starting value of spectral normalization
startdrm Starting value of drm parameter
points Number of points on each side of starting values to test
scaling Range around the starting values to test -- for example,
points=2 and scaling=1.5 means that the values tested are
x/1.5, x/1.25, x, x*1.25, x*1.5
scaling[0]=norm, scaling[1]=spectral parameter,
scaling[2]=drm and works differently (direct value
rather than fractional)
OPTIONAL INPUTS:
none
OUTPUTS:
bestpar best-fit value of the spectral parameter
bestnorm best-fit value of the normalization parameter
bestdrm best-fit value of the drm interpolation
bestparn array location of bestpar
bestnormn array location of bestnorm
bestdrmn array location of bestdrm
modvals values of the best-fit function at the data bin centers
chiarray array of chi-square values
bestchi lowest chi-square value
pararray array of spectral parameter values
normarray array of normalization parameter values
drmarray array of drm parameter values
CALLS: None.
STATUS: not yet tested
TO BE ADDED: N/A
REVISION HISTORY:
Version 1.0 DMS 7/12/12 based on barrel_fitgrid2
Version 2.0 DMS 7/18/12 added "usebins" -- functionality was missing
before -- renamed "bestvals" to "modvals"
"scaling" becomes an array instead of 3
variables with different names
Version 2.1 DMS 7/24/12 Add code to omit unphysical drm scale regions
11/12/13 insist on only one value of bestparn, etc.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fitgrid4.pro)
NAME: barrel_sp_fold.pro
DESCRIPTION: BARREL top-level spectral folding routine
REQUIRED INPUTS:
ss spectrum structure
OPTIONAL INPUTS:
method 1 = single-parameter spectrum, single drm, use "model"
2 = single fixed (file input) spectrum, single drm
3 = double fixed (file input) spectrum, single drm
4 = single-parameter spectrum, dual drm, use "model"
5 = single fixed (file input)) spectrum, dual drm
6 = double fixed (file input)) spectrum, dual drm
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
fitrange energy range to use for fitting (regardless of full range
of ebins) (this is a vector [start,end]
maxcycles Maximum number of times to try rescaling range for fit parameters
quiet Don't make graphs + screen output
verbose show some debugging info as fits go along
modlfile Filename for inputting a handmade model component
secondmodlfile Filename for inputting a second handmade model component
bkg_renorm match background to source > 3 MeV before subtracting
systematic_error_frac Fraction of bkg-subtracted value to be added
in quadrature with statistical errors.
Typical value might be 0.1 (10%)
OUTPUTS (written into ss structure):
params best fit parameters
param_ranges ranges on best fit parameters (1 sigma) (2x2 array)
chisquare chi-square (not reduced)
dof degrees of freedom associated with chisquare
modvals values of the fit function at the centers of the energy bins
CALLS:
edge_products(), (imported from solarsoft), barrel_sp_fold_m1
through barrel_sp_fold_m6
NOTES:
STATUS: Tested for methods 1&4 on artificial data.
TO BE ADDED:
Support for other spectral models
Support for single + summed fixed spectra (from file), varying normalization
REVISION HISTORY:
Version 1.0 DMS 7/18/12 -- split out from barrel_folding as the new top layer
7/24/12 -- fixed minimum of plot to account for
possible values << 1 (fixed threshold for minimum
of plot changed to 1.d-6 instead of 0.5
when there are real values that are too low)
2.3 8/19/12 -- added support for method 3
2.5 1/5/13 -- rewrite to support new general
spectroscopy structure ss
2.6 5/29/13 -- adding support for L2 MSPC files (already cts/keV)
2.8 7/8/13 -- remove call to idl_screen_graphics()
3.0 9/9/13 -- set ss.numparams here instead of upstream at barrel_sp_make()
3.2 10/29/13 - Print total, background, and net count
rates just before proceeding to fit
11/12/13 - plot data before fitting in case fit crashes
11/12/13 - bkg_renorm defaults to zero, not 1.
3.4 4/17/14 - Report counts & electron flux for best fit.
Keep track of best-fit model in electron
space and save it and print the total.
Fixed bug that would use bkg_renorm
regardless of setting.
Make explicit that method 4 isn't ready yet.
3.5 8/12/14 Option for adding a fraction of the
background-subtracted spectrum as error
This keeps very small error bars at low
energies from over-dominating the fit, and
represents, e.g., systematic uncertainties
in the response matrix.
3.6 2/12/15 pass altitude to _m1 for initial param. guess
9/23/15 Change x-axes for plots to [10,1000] always
broadened range of default ratio plot
residuals=2 counts only pts in fit range.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fold.pro)
NAME: barrel_sp_fold_m1.pro
DESCRIPTION: BARREL mid-level spectral folding routine
method1 = single-parameter analytic spectrum, single drm
REQUIRED INPUTS:
subspec background subtracted count spectrum
subspecerr its error bars
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
drm response matrix for correct payload altitude and chosen PID
of electrons
phmean energy channel centers (should have length = length of spectrum)
-- this is for the photons dimension
phwidth energy channel widths (should have length = length of spectrum)
-- this is for the photons dimension
ctwidth energy channel widths (should have length = length of spectrum)
-- this is for the counts dimension
ctmean energy channel centers (should have length = length of spectrum)
-- this is for the counts dimension
usebins subset of energy channels (count space) to actually use for fitting
maxcycles Maximum number of times to try rescaling range for fit parameters
OPTIONAL INPUTS:
quiet Don't make graphs + screen output
verbose show some debugging info as fits go along
OUTPUTS:
params best fit parameters
param_ranges ranges on best fit parameters (1 sigma) (2x2 array)
modvals values of the fit function at the centers of the energy bins
chisquare chi-square (not reduced)
dof degrees of freedom associated with chisquare
CALLS:
barrel_sp_fitgrid1.pro
STATUS: Tested with artificial data, 7/20/12
TO BE ADDED:
Support for other spectral models
REVISION HISTORY:
Version 1.0 DMS 7/18/12 -- split out from barrel_folding as new middle layer;
fixed "dof" to use "usebins" (at the same
time as fixing "fitgrid1" to use "usebins")
Errors fixed 7/20/12 -- definition of "tryspec" didn't include
multiplication by "phwidth", meaning lousy
starting point for fits -- which converged anyway.
Version 2.3 DMS ;8/26/12 -- fixed logical error in rescaling
algorithm in search for chisquare+1 contour.
Removed redundant routine identifier from "message"
Version 2.4 DMS 8/26/12 -- added support for model 2 (monoenergetic)
Version 3.4 DMS 4/17/14 -- save elecmodel for best fit e- spectrum
Version 3.6 DMS 2/12/15 Use dynamic generation of first-guess
parameters based on true altitude
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fold_m1.pro)
NAME: barrel_sp_fold_m2.pro
DESCRIPTION: BARREL mid-level spectral folding routine
method2 = single-parameter file-based spectrum, single drm
REQUIRED INPUTS:
subspec background subtracted count spectrum
subspecerr its error bars
modlfile Input model spectrum. Required format is
starting energy boundary, ending energy boundary, flux
it will be interpolated to phebins if necessary. Comment
lines beginning with characters not = '0123456789.-' are
allowed at the start.
drm response matrix for correct payload altitude and chosen PID
of electrons
phebins energy channel boundaries (length = length of spectrum + 1)
phmean energy channel centers (should have length = length of spectrum)
-- this is for the photons dimension
phwidth energy channel widths (should have length = length of spectrum)
-- this is for the photons dimension
ctwidth energy channel widths (should have length = length of spectrum)
-- this is for the counts dimension
usebins subset of energy channels (count space) to actually use for fitting
maxcycles Maximum number of times to try rescaling range for fit parameters
OPTIONAL INPUTS:
quiet Don't make graphs + screen output
verbose show some debugging info as fits go along
OUTPUTS:
params best fit parameters (only one in this case)
param_ranges range on best fit parameter (1 sigma)
modvals values of the fit function at the centers of the energy bins
chisquare chi-square (not reduced)
dof degrees of freedom associated with chisquare
CALLS:
barrel_sp_readmodelspec, barrel_sp_fitgrid2
STATUS:
TO BE ADDED:
REVISION HISTORY:
Version 1.0 DMS 7/24/12 -- split out from barrel_folding as new middle layer;
fixed "dof" to use "usebins" (at the same
time as fixing "fitgrid1" to use "usebins")
Version 2.3 DMS ;8/26/12 -- Removed redundant routine identifier from "message"
Version 3.4 DMS 4/17/14 -- save elecmodel for best fit e- spectrum
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fold_m2.pro)
NAME: barrel_sp_fold_m3.pro
DESCRIPTION: BARREL mid-level spectral folding routine
method3 = two file-based spectral shapes, single drm
REQUIRED INPUTS:
subspec background subtracted count spectrum
subspecerr its error bars
modlfile Input model spectrum. Required format is
starting energy boundary, ending energy boundary, flux
it will be interpolated to phebins if necessary. Comment
lines beginning with characters not = '0123456789.-' are
allowed at the start.
secondmodlfile Second input model spectrum.
drm response matrix for correct payload altitude and chosen PID
of electrons
phebins energy channel boundaries (length = length of spectrum + 1)
phmean energy channel centers (should have length = length of spectrum)
-- this is for the photons dimension
phwidth energy channel widths (should have length = length of spectrum)
-- this is for the photons dimension
ctwidth energy channel widths (should have length = length of spectrum)
-- this is for the counts dimension
usebins subset of energy channels (count space) to actually use for fitting
maxcycles Maximum number of times to try rescaling range for fit parameters
OPTIONAL INPUTS:
quiet Don't make graphs + screen output
verbose show some debugging info as fits go along
OUTPUTS:
params best fit parameters
param_ranges ranges on best fit parameters (1 sigma) (2x2 array)
modvals values of the fit function at the centers of the energy bins (first component)
secondmodvals values of the fit function at the centers of the energy bins (second component)
chisquare chi-square (not reduced)
dof degrees of freedom associated with chisquare
CALLS:
barrel_sp_fitgrid3.pro
STATUS:
TO BE ADDED:
REVISION HISTORY:
Version 1.0 DMS 8/18/12
Version 3.4 DMS 4/17/14 -- save elecmodel for best fit e- spectrum
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fold_m3.pro)
NAME: barrel_sp_fold_m4.pro
DESCRIPTION: BARREL mid-level spectral folding routine
method4 = analytical spectral model + dual DRMs
REQUIRED INPUTS:
subspec background subtracted count spectrum
subspecerr its error bars
model spectral model of electron spectrum (default is exponential)
1 = exponential
2 = monoenergetic
drm response matrix for correct payload altitude and chosen PID
of electrons
drm2 second response matrix (will find allowed interpolated
range between these two)
phmean energy channel centers (should have length = length of spectrum)
-- this is for the photons dimension
phwidth energy channel widths (should have length = length of spectrum)
-- this is for the photons dimension
ctwidth energy channel widths (should have length = length of spectrum)
-- this is for the counts dimension
usebins subset of energy channels (count space) to actually use for fitting
maxcycles Maximum number of times to try rescaling range for fit parameters
OPTIONAL INPUTS:
quiet Don't make graphs + screen output
verbose show some debugging info as fits go along
OUTPUTS:
params best fit parameters
param_ranges ranges on best fit parameters (1 sigma) (2x2 array)
modvals values of the fit function at the centers of the energy bins
chisquare chi-square (not reduced)
dof degrees of freedom associated with chisquare
CALLS:
barrel_sp_fitgrid4.pro
STATUS:
TO BE ADDED:
Support for other spectral models
Reasonable formula to guess e-folding or mono-E from count spectrum
REVISION HISTORY:
Version 1.0 DMS 7/18/12 -- split out from barrel_folding as new middle layer;
fixed "dof" to use "usebins" (at the same
time as fixing "fitgrid1" to use "usebins")
Errors fixed 7/20/12 -- definition of "tryspec" didn't include
multiplication by "phwidth", meaning lousy
starting point for fits -- which converged anyway.
Version 2.3 DMS ;8/26/12 -- fixed logical error in rescaling
algorithm in search for chisquare+1 contour.
Removed redundant routine identifier from "message"
Version 2.4 DMS 8/26/12 -- added support for model 2 (monoenergetic)
Version 3.4 DMS 4/17/14 -- save elecmodel for best fit e- spectrum
(See projects/barrel/barrel_sp_v3.7/barrel_sp_fold_m4.pro)
NAME: barrel_sp_make.pro (function)
DESCRIPTION: Creates spectroscopy data structure
REQUIRED INPUTS: none
OPTIONAL INPUTS:
numsrc # of source spectrum time intervals (default 1)
numbkg # of background spectrum time intervals (default 1)
slow slow (256-channel) spectra versus default medium
OUTPUTS:
returns the spectroscopy system structure that is passed to all
subsequent spectroscopy routines. The structure content will vary
with software version.
CALLS:
barrel_make_standard_energies(),barrel_make_standard_electron_energies()
NOTES:
STATUS: up to date
TO BE ADDED: only in response to changes in other routines
REVISION HISTORY:
Version 3.0 DMS 9/9/13
revisions from 2.9: add size options for slow spectra
postpone numparams until fitting routine; leave
room for a large number (10)
3.4 4/17/14 Add space for best fit model in e- space
(See projects/barrel/barrel_sp_v3.7/barrel_sp_make.pro)
NAME: barrel_sp_pick_datatime.pro
DESCRIPTION: Pick start and stop times for spectral accumulation and
background
REQUIRED INPUTS:
ss spectrum structure
startdatetime start time for plot from which we will pick source
and background times, format yyyy-mm-dd/hh:mm:ss
duration duration in hours to look, starting at startdatetime
payload payload ID, with format, e.g., '1G'
bkgmethod 1=select bkg intervals from data stream
2=use bkg model from U. of Washington
OPTIONAL INPUTS:
lcband which FSPC band to plot during selection (default 1)
uselog plot FSPC data on a log scale (default 0)
level data CDF level (default 'l2')
version data CDF version for barrel_load_data. If not
specified, use that routine's default
starttimes,endtimes,startbkg,endbkg:
start and end times (string format or unix epoch) for source
and background intervals (if not to be selected graphically)
medticks,slowticks Show vertical dotted lines at the start and
and of medium, slow spectra (for use only
when zoomed in to small times!
OUTPUTS: No direct outputs, but the spectrum structure ss gets
updated with trange and bkgtrange (primary purpose of this routine),
also: payload,askdate, askduration, bkgmethod
CALLS: barrel_load_data, barrel_selecttimes
NOTES:
STATUS:
TO BE ADDED:
REVISION HISTORY:
Version 3.0 DMS 9/9/13
Most recent changes from v2.9:
remove passing x start and stop values to barrel_selecttimes
KY 8/28/13 'brl???_' -> 'brl' and '_LC' -> '_FSPC' (update tplot
variable names)
9/30/13 -- remove "dobkg"; whether background intervals are
selected should automatically follow bkgmethod.
10/1/13 -- put in option for already having specified the time ranges
by hand. (start/end times/bkgs)
10/25/13 -- add provision for start/end times entered by hand to be
already in unix epoch (as from a prev. run)
10/29/13 - Add plot of altitude to assist in background selection
11/12/13 - Add option for vertical ticks for medium and slow spectra
11/12/13 - Add default "no update" for reading FSPC data
2/10/15 DMS - collect altitude using correct source time interval (average)
3/5/15 DMS - cull out "NaNs" from altitude data before averaging
8/20/15 DMS - fix bug wherein 3/5 fix only applied to
screen-selected, not predetermined time intervals.
This reorders operations somewhat
4/5/16 DMS - fixed erroneous "numspec" to "numbkg" when looping to
set multiple background intervals by hand.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_pick_datatime.pro)
NAME: barrel_sp_readmodelspec.pro
DESCRIPTION: Spectral model file reader for barrel folding routines.
File format must be 3 columns, start-energy, end-energy,
flux per keV at center of the bin.
REQUIRED INPUTS:
fname spectrum file name
phebins energy channel boundaries desired (may or may not match file)
phmean energy channel centers
OPTIONAL INPUTS:
none
OUTPUTS:
outspec model spectrum in flux per keV at the values phmean
CALLS:
none
STATUS: Tested with artificial data, both with and without interpolation
TO BE ADDED: N/A
REVISION HISTORY:
Version 1.0 DMS 7/24/12
Version 3.4 DMS 4/17/14: The interpolation kills a single-bin
(monoenergetic) flux or other narrow features. Replace
"interpol" with "hsi_rebinner" for rebinning to our bins.
Warning: our bins are broad so we will lose some information
about where within the bin the flux actually is. Use
method=1, model=2 (precise monoenergetic) for mono. models
instead.
(See projects/barrel/barrel_sp_v3.7/barrel_sp_readmodelspec.pro)
INPUT: oldBins is a list of bin edges. It contains n>=2 unique
elements sorted in ascending order
newBins is a list of bin edges. It contains m>=2 unique
elements sorted in ascending order
oldVals is a list of n-1 values associated to
oldBins, the values to interpolate. That is,
oldVals[i] is associated with the bin having edges
(oldBins[i], oldBins[i+1]).
flux set means oldVals are counts/binWidth, not counts
OUTPUT: returns a list of m-1 interpolated values associated to
newBins
METHOD: traverse both bin lists once. For each old bin
there are 4 possibilities:
a) old bin precedes current new bin
b) new bin precedes the current old bin
c) old bin overlaps new bin, extends beyond
d) old bin overlaps new bin, does not extend beyond
CALLS: none
NOTES: 1. algorithm is simple linear interpolation.
2. The interpolated vector might contain less
information than the input vector. Exchanging oldBins
and newBins is not an inverse function for brl_rebin().
3. Difference between FLUX=0 and FLUX=1: suppose
the old and new binning schemes have the same
total range. Then FLUX=0 preserves the sum of
oldVals, and would be used when oldVals represents
counts in each bin, whereas FLUX=1 preserves the dot
product of oldVals and the (n-1 length) vector of
differences between successive oldBin entries---used
when oldVals has counts divided by bin width.
WARNING: since this might be called repeatedly with only
oldVals changing, error-checking is minimal. The
calling routine is responsible for error-checking.
REVISION HISTORY:
works, not much testing mm/Jul 2012
22Oct2012: corrected normalization for flux eq 0
01Jan2013: calculates array lengths n&m automatically (DMS)
(See projects/barrel/barrel_sp_v3.7/brl_rebin.pro)
Name: edge_products
Purpose: From a vector of contiguous channel boundaries return the
commonly used quantities for plotting and scaling.
Category:
GEN, SPECTRA
Input: Edges -if 1d, contiguous channel boundaries, n+1 values for n channels
if 2d, 2xn, [lo(i),hi(i)], etc., assumed contiguous for
calculating edges_1
Output:
Mean - arithmetic mean of boundaries
Gmean - geometric mean
width - absolute difference between upper and lower edges
edges_2 - 2xn array of edges [lo(i), hi(i)], etc.
edges_1 - array of n+1 edges of n contiguous channels
Keyword Input
EPSILON - If the absolute relative difference is less than epsilon
then two numbers are considered to be equal and a new bin is not required under
the contiguous requirement. If epsilon isn't passed but CONTIGOUS is set it
attempts to construct an epsilon based on the average relative difference between
adjacent bins, it takes that value and multiplies it by 1e-5 and limits that to
1e-6
CONTIGUOUS - force all edges to be contiguous, including edges_1
Mod. History:
ras, 21-oct-93
8-dec-2001, richard.schwartz@gsfc.nasa.gov, added CONTIGUOUS
added protection against degenerate entry of single value for edges,
clearly edges_2 and width have no meaning, but are set to edges and 0.0 respectively
25-aug-2006, ras, added epsilon and default epsilon as test
to differentiate real numbers. If the absolute relative difference is less than epsilon
then two numbers are considered to be equal and a new bin is not required under
the contiguous requirement
(See projects/barrel/barrel_sp_v3.7/edge_products.pro)
NAME:
GEO2MAG()
PURPOSE:
Convert from geographic to geomagnetic coordinates
EXPLANATION:
Converts from GEOGRAPHIC (latitude,longitude) to GEOMAGNETIC (latitude,
longitude). (Altitude remains the same)
Latitudes and longitudes are expressed in degrees.
CALLING SEQUENCE:
mcoord=geo2mag(gcoord)
INPUT:
gcoord = a 2-element array of geographic [latitude,longitude], or an
array [2,n] of n such coordinates.
KEYWORD INPUTS:
None
OUTPUT:
a 2-element array of magnetic [latitude,longitude], or an array [2,n]
of n such coordinates
COMMON BLOCKS:
None
EXAMPLES:
geographic coordinates of magnetic south pole
IDL> mcoord=geo2mag([79.3,288.59])
IDL> print,mcoord
89.999992 -173.02325
MODIFICATION HISTORY:
Written by Pascal Saint-Hilaire (Saint-Hilaire@astro.phys.ethz.ch),
May 2002
Changed the name to avoid conflicts, jmm, 2017-12-13, no other
changes from the SSW version
(See projects/barrel/barrel_sp_v3.7/barrel_geo2mag.pro)
Project : HESSI
Name : get_uniq
Purpose : return unique elements of an array
Category : utility
;
Syntax : IDL> out=get_uniq(in)
Inputs : IN = array to search
Outputs : OUT = unique elements
Optional Out: SORDER = sorting index
Keywords : NO_CASE: case insensitive ordering on strings
COUNT: # of uniq values
EPSILON: positive number ge 0, for gt 0 the difference between
two consecutive numbers must be gt epsilon for them to be unique.
History : Written 20 Sept 1999, D. Zarro, SM&A/GSFC
25-Aug-2006, richard.schwartz@gsfc.nasa.gov; added an epsilon tolerance
for determining floats to be the same value
Contact : dzarro@solar.stanford.edu
(See projects/barrel/barrel_sp_v3.7/get_uniq.pro)