Hi Everyone

I've just uploaded a number of new routines to atest

-rw-rw-r--   1 richard  hessi       2930 Jun 25 16:30
-rw-rw-r--   1 richard  hessi       3351 Jun 25 16:33
-rw-rw-r--   1 richard  hessi      65275 Jun 27 17:48
-rw-rw-r--   1 richard  hessi      32555 Jun 28 21:16
-rw-rw-r--   1 richard  hessi       1278 Jun 29 19:59
-rw-rw-r--   1 richard  hessi       3273 Jun 30 10:41
-rw-rw-r--   1 richard  hessi       2782 Jul  5 12:31
-rw-rw-r--   1 richard  hessi       3360 Jul  5 15:23
-rw-rw-r--   1 richard  hessi      15812 Jul  5 18:15
-rw-rw-r--   1 richard  hessi      22350 Jul  5 19:03
-rw-rw-r--   1 richard  hessi       1258 Jul  5 19:04
-rw-rw-r--   1 richard  hessi       9276 Jul  7 15:04

There are two important new control parameters to give us new capabilities,
and there is code to suppress  the counts in the high energy pha's (a2d's)
below 2750 keV when the channels are too narrow (below 2.1 keV).
I've also believe that I've sped up the flatfield correction noticeably for
mutiple rotation images.  That's the new version of
hsi_annsec_bproj_weight.pro which substitutes the new routine, ibsort() for
bsort.  ibsort sorts an integer array and preserves the input order for
degenerate values.  It takes advantage of the sorting engine in histogram().
Sum_coincidence - When set (default is 0), it will sum the normal
anti-coincidence spectrum and the segment coincidence spectrum.  If
COINCIDENCE_FLAG has not been set, it will set it and force reprocessing the
spectrogram (spectrum & lightcurve) on calls to GETDATA().

Thus the meaning of Sum_flag has been changed.  Now this means only to sum
over the detectors/segments created for spectrum or lightcurve.
Multiple energy bands can be created at the same time in the
binned_eventlist (available through set in image) using the
SP_ENERGY_BINNING control parameter.  The old parameter, ENERGY_BAND, will
still work as before unless you have already started to use
IM_ENERGY_BINNING in that object.  EB_INDEX (default is 0) selects the
energy band pair to use.

IM_ENERGY_BINNING - a control parameter of the binned_eventlist which can be
set through the IMAGE class.  Use it like SP_ENERGY_BINNING, where it takes
a single number and treats it as a code, a vector of energies treating each
pair in succession as the band, or a 2xN array of energies, where each set
of two defines the energy band.

EB_INDEX selects the pair to use and set to ENERGY_BAND.  When
SP_ENERGY_BINNING is active, ENERGY_BAND becomes more like an info

The image cube software doesn't take advantage of this yet, but you could
make a series of images for a single time_range by calls like this

o = hsi_image( obs_time=obs_time, time_range=time_range,

o->set, xyoffset=xyoffset, image_alg = 'image_alg'

image_row = fltarr(64,64, 10)

for i=0,9 do image_row[0,0,i] = o->getdata(eb_index = i)

The advantage of using these controls is that the binned_eventlist is only
called once for a given time_range, and avoids costly reprocessing of the
eventlist for long and high rate accumulations such as many people use for
the X1.5 flare on 21 April.

N.B., the binned_eventlist can easily use more than 30 KBytes per second per
energy.  For 100 seconds, and 20 energy bins, there could be 60 Megabytes
held in the binned_eventlist, and more than 120 MBytes used in creating that
array.  There is no protection at this time to keep you from requesting more
memory than your system can provide.  Be particularly careful about using
the energy_binning codes which have up to 5000 energy bins.