10 #include <mva/utility/Binning.h>
11 #include <framework/utilities/FileSystem.h>
12 #include <framework/utilities/TestHelpers.h>
14 #include <gtest/gtest.h>
20 TEST(BinningTest, Binning)
24 EXPECT_EQ(binning.m_signal_pdf.size(), 3);
25 EXPECT_EQ(binning.m_signal_cdf.size(), 3);
26 EXPECT_EQ(binning.m_bckgrd_pdf.size(), 3);
27 EXPECT_EQ(binning.m_bckgrd_cdf.size(), 3);
28 EXPECT_EQ(binning.m_boundaries.size(), 4);
30 EXPECT_FLOAT_EQ(binning.m_signal_yield, 0.0);
31 EXPECT_FLOAT_EQ(binning.m_bckgrd_yield, 0.0);
33 binning.m_signal_pdf[0] = 1.0;
34 binning.m_signal_pdf[1] = 2.0;
35 binning.m_signal_pdf[2] = 3.0;
37 binning.m_bckgrd_pdf[0] = 3.0;
38 binning.m_bckgrd_pdf[1] = 2.0;
39 binning.m_bckgrd_pdf[2] = 1.0;
41 binning.m_boundaries = {1.0, 2.0, 3.0, 4.0};
43 binning.normalizePDFs();
45 EXPECT_FLOAT_EQ(binning.m_signal_pdf[0], 1.0 / 6.0 * 3.0);
46 EXPECT_FLOAT_EQ(binning.m_signal_pdf[1], 2.0 / 6.0 * 3.0);
47 EXPECT_FLOAT_EQ(binning.m_signal_pdf[2], 3.0 / 6.0 * 3.0);
49 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[0], 3.0 / 6.0 * 3.0);
50 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[1], 2.0 / 6.0 * 3.0);
51 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[2], 1.0 / 6.0 * 3.0);
53 EXPECT_FLOAT_EQ(binning.m_signal_yield, 6.0);
54 EXPECT_FLOAT_EQ(binning.m_bckgrd_yield, 6.0);
56 binning.calculateCDFsFromPDFs();
58 EXPECT_FLOAT_EQ(binning.m_signal_pdf[0], 1.0 / 6.0 * 3.0);
59 EXPECT_FLOAT_EQ(binning.m_signal_pdf[1], 2.0 / 6.0 * 3.0);
60 EXPECT_FLOAT_EQ(binning.m_signal_pdf[2], 3.0 / 6.0 * 3.0);
62 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[0], 3.0 / 6.0 * 3.0);
63 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[1], 2.0 / 6.0 * 3.0);
64 EXPECT_FLOAT_EQ(binning.m_bckgrd_pdf[2], 1.0 / 6.0 * 3.0);
66 EXPECT_FLOAT_EQ(binning.m_signal_yield, 6.0);
67 EXPECT_FLOAT_EQ(binning.m_bckgrd_yield, 6.0);
69 EXPECT_FLOAT_EQ(binning.m_signal_cdf[0], 1.0 / 6.0);
70 EXPECT_FLOAT_EQ(binning.m_signal_cdf[1], 3.0 / 6.0);
71 EXPECT_FLOAT_EQ(binning.m_signal_cdf[2], 6.0 / 6.0);
73 EXPECT_FLOAT_EQ(binning.m_bckgrd_cdf[0], 3.0 / 6.0);
74 EXPECT_FLOAT_EQ(binning.m_bckgrd_cdf[1], 5.0 / 6.0);
75 EXPECT_FLOAT_EQ(binning.m_bckgrd_cdf[2], 6.0 / 6.0);
77 binning.m_boundaries[0] = 1.0;
78 binning.m_boundaries[1] = 2.0;
79 binning.m_boundaries[2] = 3.0;
80 binning.m_boundaries[3] = 4.0;
82 EXPECT_EQ(binning.getBin(0.0), 0);
83 EXPECT_EQ(binning.getBin(1.0), 0);
84 EXPECT_EQ(binning.getBin(1.5), 0);
85 EXPECT_EQ(binning.getBin(2.0), 1);
86 EXPECT_EQ(binning.getBin(2.5), 1);
87 EXPECT_EQ(binning.getBin(3.0), 2);
88 EXPECT_EQ(binning.getBin(3.5), 2);
89 EXPECT_EQ(binning.getBin(4.5), 2);
93 TEST(BinningTest, EqualFrequencyBinning)
95 std::vector<float> data(100);
96 std::vector<float> weights(100);
97 std::vector<bool> isSignal(100);
99 for (
unsigned int i = 0; i < 100; ++i) {
101 weights[i] =
static_cast<int>(i / 10) + 1;
102 isSignal[i] = (i % 2) == 1;
135 TEST(BinningTest, EquidistantBinning)
137 std::vector<float> data(100);
138 std::vector<float> weights(100);
139 std::vector<bool> isSignal(100);
141 for (
unsigned int i = 0; i < 100; ++i) {
143 weights[i] =
static_cast<int>(i / 10) + 1;
144 isSignal[i] = (i % 2) == 1;