5 #include <analysis/dbobjects/PIDPriorsTable.h>
6 #include <analysis/dbobjects/PIDPriors.h>
8 #include <framework/gearbox/Const.h>
9 #include <framework/utilities/TestHelpers.h>
13 #include <gtest/gtest.h>
31 std::vector<float> edgesX = {0., 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.7, 1.9, 2.2, 2.5, 3., 3.5, 4., 5., 6., 7., 10.};
32 std::vector<float> edgesY = { -1., -0.95, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 1.};
42 std::cout <<
"after setting (1.1, 0.54) amd (9.5, -0.67)" << std::endl;
48 std::cout <<
" ----- Setting the priors from outside ------ " << std::endl;
50 std::vector<float> prior;
52 for (
int j = 0; j < (int)edgesY.size() - 1; j++) {
53 for (
int i = 0; i < (int)edgesX.size() - 1; i++) {
54 prior.push_back(0.001 * (i + j * (edgesX.size() - 1)));
63 EXPECT_FLOAT_EQ(PIDTable.
getPriorValue(0.1, -0.98), 0.001 * (0 + 0 * (edgesX.size() - 1)));
64 EXPECT_FLOAT_EQ(PIDTable.
getPriorValue(0.71, -0.65), 0.001 * (5 + 4 * (edgesX.size() - 1)));
74 std::vector<float> badEdges1 = {0.};
75 std::vector<float> badEdges2 = {};
80 EXPECT_B2WARNING(PIDTable2.
setBinEdges(edgesX, badEdges1));
81 EXPECT_B2WARNING(PIDTable2.
setBinEdges(edgesX, badEdges2));
91 std::cout <<
"after setting (1.1, 0.54) and (9.5, -0.67)" << std::endl;
106 std::vector<float> edgesX = {0., 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.};
107 std::vector<float> edgesY = { -1., -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.};
109 std::vector<float> prior1;
110 std::vector<float> prior2;
111 std::vector<float> prior3;
112 std::vector<float> prior4;
113 std::vector<float> prior5;
114 std::vector<float> prior6;
116 TH2F* counts1 =
new TH2F(
"counts1",
"counts1", 10, 0, 10., 20, -1, 1);
117 TH2F* counts2 =
new TH2F(
"counts2",
"counts2", 10, 0, 10., 20, -1, 1);
118 TH2F* counts3 =
new TH2F(
"counts3",
"counts3", 10, 0, 10., 20, -1, 1);
119 TH2F* counts4 =
new TH2F(
"counts4",
"counts4", 10, 0, 10., 20, -1, 1);
120 TH2F* counts5 =
new TH2F(
"counts5",
"counts5", 10, 0, 10., 20, -1, 1);
121 TH2F* counts6 =
new TH2F(
"counts6",
"counts6", 10, 0, 10., 20, -1, 1);
123 TH2F* norms =
new TH2F(
"norms",
"norms", 10, 0, 10., 20, -1, 1);
125 TRandom3*
rn =
new TRandom3();
129 for (
int i = 0; i < (int)edgesX.size() - 1; i++) {
130 for (
int j = 0; j < (int)edgesY.size() - 1; j++) {
132 float n1 = (float)
rn->Poisson(100);
133 float n2 = (float)
rn->Poisson(100);
134 float n3 = (float)
rn->Poisson(700);
135 float n4 = (float)
rn->Poisson(200);
136 float n5 = (float)
rn->Poisson(100);
137 float n6 = (float)
rn->Poisson(10);
139 float n = n1 + n2 + n3 + n4 + n5 + n6;
141 prior1.push_back(n1 / n);
142 prior2.push_back(n2 / n);
143 prior3.push_back(n3 / n);
144 prior4.push_back(n4 / n);
145 prior5.push_back(n5 / n);
146 prior6.push_back(n6 / n);
148 counts1->SetBinContent(i + 1, j + 1, n1);
149 counts2->SetBinContent(i + 1, j + 1, n2);
150 counts3->SetBinContent(i + 1, j + 1, n3);
151 counts4->SetBinContent(i + 1, j + 1, n4);
152 counts5->SetBinContent(i + 1, j + 1, n5);
153 counts6->SetBinContent(i + 1, j + 1, n6);
154 norms->SetBinContent(i + 1, j + 1, n);
192 std::cout <<
"setting the tables " << std::endl;
204 priors2.
setPriors(part_e, counts1, norms);
205 priors2.
setPriors(part_mu, counts2, norms);
206 priors2.
setPriors(part_pi, counts3, norms);
207 priors2.
setPriors(part_K, counts4, norms);
208 priors2.
setPriors(part_p, counts5, norms);
209 priors2.
setPriors(part_d, counts6, norms);
211 counts1->Divide(norms);
212 counts2->Divide(norms);
213 counts3->Divide(norms);
214 counts4->Divide(norms);
215 counts5->Divide(norms);
216 counts6->Divide(norms);
218 std::cout <<
"division done" << std::endl;
220 std::cout <<
"setting the TH2 " << std::endl;
230 std::vector<Const::ChargedStable> codes = {part_e, part_mu, part_pi, part_K, part_p, part_d};
231 for (
auto code : codes) {
232 for (
int i = 0; i < 3; i++) {
233 double p =
rn->Uniform(0., 10);
234 double c =
rn->Uniform(-1., 1);
240 EXPECT_FLOAT_EQ(0., priors.
getPriorValue(part_pi, 11.1, 0.));
242 EXPECT_FLOAT_EQ(0., priors.
getPriorValue(part_pi, 0.98, -1.001));
244 EXPECT_FLOAT_EQ(0., priors2.
getPriorValue(part_pi, 11.1, 0.));
245 EXPECT_FLOAT_EQ(0., priors2.
getPriorValue(part_pi, -1, 0.5));
246 EXPECT_FLOAT_EQ(0., priors2.
getPriorValue(part_pi, 0.98, -1.001));
248 EXPECT_FLOAT_EQ(0., priors3.
getPriorValue(part_pi, 11.1, 0.));
249 EXPECT_FLOAT_EQ(0., priors3.
getPriorValue(part_pi, -1, 0.5));
250 EXPECT_FLOAT_EQ(0., priors3.
getPriorValue(part_pi, 0.98, -1.001));