Histo2DFunction.hh
3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
* Histo2Dfunction.hh
*
* Created on: Jan 30, 2023
* Author: AKKODIS
*/
#ifndef HISTO2DFUNCTION_HH_
#define HISTO2DFUNCTION_HH_
#include <iostream>
#include <map>
#include <string>
#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<int,std::vector<double>> 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 NormDensity2DFunction : public Histo2DFunction {
public:
NormDensity2DFunction() {}
~NormDensity2DFunction() {}
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 normalized";
}
};
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_ */