// class definition for grouping class. Useful for setting grouping arrays and binning // both spectra and responses. #ifndef HAVE_HEASP #include "heasp.h" #endif #ifndef HAVE_SPutils #include "SPutils.h" #endif #define HAVE_grouping 1 class grouping{ public: vector flag; // Grouping flag: 1=start of bin, 0=continuation of bin // constructor grouping(); // constructor from an input array grouping(vector); // destructor ~grouping(); // display grouping information - return as a string string disp(); // clear grouping information void clear(); // read from an ascii file of grouping factors Integer read(string filename, const Integer Number, const Integer First); // set from a single binning factor void load(const Integer Binsize, const Integer Number); // set from an array of binning factors Integer load(const vector& StartBin, const vector& EndBin, const vector& BinFactor, const Integer Number, const Integer First); // return whether current element is start of new bin bool newBin(const Integer i); // return number of elements in grouping object Integer size(); }; // definition of the binning modes enum{SumMode,SumQuadMode,MeanMode,FirstEltMode,LastEltMode}; // bin an array based on the grouping factors template void GroupBin(const vector&, const Integer, const grouping&, vector&); template void GroupBin(const valarray&, const Integer, const grouping&, valarray&); // read a file with binning factors Integer ReadBinFactors(string filename, vector& StartBin, vector& EndBin, vector& BinFactor);