/* * Generate a histogram for volumetric, interfacial and common curve properties * copyright 2014, James E. McClure */ #define HISTOGRAM_RESOLUTION 1000 struct Histogram{ Histogram(double v1, double v2){ data = new double[HISTOGRAM_RESOLUTION]; minimum = v1; maximum = v2; delta = (maximum-minimum)/HISTOGRAM_RESOLUTION; } ~Histogram{ delete *data; } double *data; double minimum,maximum,delta; // Adds value into the histogram void IncludeValue(double value, double weight){ idx = floor((value-min)/delta); if (idx > HISTOGRAM_RESOLUTION) ; else if (idx < 0) ; else data[idx] += weight; } // Returns the maximum value in the histogram void GetMax(){ max = minimum; for (idx=1; idx max){ max = minimum+idx*delta; } } } // Resets the histogram to zero void Reset(){ for (idx=0; idx