Hi Everyone I've just uploaded a number of new routines to atest -rw-rw-r-- 1 richard hessi 2930 Jun 25 16:30 hsi_spectrogram_control__define.pro -rw-rw-r-- 1 richard hessi 3351 Jun 25 16:33 hsi_spectrogram_control.pro -rw-rw-r-- 1 richard hessi 65275 Jun 27 17:48 hsi_spectrogram__define.pro -rw-rw-r-- 1 richard hessi 32555 Jun 28 21:16 hsi_spectrum__define.pro -rw-rw-r-- 1 richard hessi 1278 Jun 29 19:59 hsi_time_bin__define.pro -rw-rw-r-- 1 richard hessi 3273 Jun 30 10:41 hsi_calib_eventlist_control__define.pro -rw-rw-r-- 1 richard hessi 2782 Jul 5 12:31 hsi_binned_eventlist_control__define.pro -rw-rw-r-- 1 richard hessi 3360 Jul 5 15:23 hsi_binned_eventlist_control.pro -rw-rw-r-- 1 richard hessi 15812 Jul 5 18:15 hsi_binned_eventlist__define.pro -rw-rw-r-- 1 richard hessi 22350 Jul 5 19:03 hsi_calib_eventlist__define.pro -rw-rw-r-- 1 richard hessi 1258 Jul 5 19:04 hsi_calib_eventlist_info__define.pro -rw-rw-r-- 1 richard hessi 9276 Jul 7 15:04 hsi_annsec_bproj_weight_map.pro 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 parameter. 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, im_energy_binning=findgen(11)*5+6) 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. Richard