/* * Histo2Dfunction.hh * * Created on: Jan 30, 2023 * Author: AKKODIS */ #ifndef HISTO2DFUNCTION_HH_ #define HISTO2DFUNCTION_HH_ #include #include #include #include "Matrix.hh" #include "Range.hh" namespace plot { /** * Class that manages the function to apply on the 2Dhistogram */ class Histo2DFunction { public: Histo2DFunction(){ } ~Histo2DFunction(){} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor) = 0; void applySmooth(MatrixGrid &matrixGrid, int smoothFactor, int columnSize ); virtual std::string getTextLegend() { return ""; } std::map> getMatrixValues(double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber); }; /** * All the way down, different classes that apply a function on 2Dhistogram and return result */ class Density2DFunction : public Histo2DFunction { public: Density2DFunction() {} ~Density2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* /*zData*/, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber,double& zMin, double& zMax, int smoothFactor); virtual std::string getTextLegend() { return "Counts in bins"; } }; class Mean2DFunction : public Histo2DFunction { public: Mean2DFunction() {} ~Mean2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor); virtual std::string getTextLegend() { return "Mean on bins for "; } }; class Max2DFunction : public Histo2DFunction { public: Max2DFunction() {} ~Max2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor); virtual std::string getTextLegend() { return "Max on bins for "; } }; class Min2DFunction : public Histo2DFunction { public: Min2DFunction() {} ~Min2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor); virtual std::string getTextLegend() { return "Min on bins for "; } }; class Median2DFunction : public Histo2DFunction { public: Median2DFunction() {} ~Median2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor); virtual std::string getTextLegend() { return "Median on bins for "; } }; class StandardDeviation2DFunction : public Histo2DFunction { public: StandardDeviation2DFunction() {} ~StandardDeviation2DFunction() {} virtual void apply(MatrixGrid &matrixGrid, double* xData, double* yData, double* zData, int nbData, Range xRange, Range yRange, int xBinNumber,int yBinNumber, double& zMin, double& zMax,int smoothFactor); virtual std::string getTextLegend() { return "Sta. deviation on bins for "; } }; } /* namespace plot */ #endif /* HISTO2DFUNCTION_HH_ */