1 #include <analysis/utility/DecayNode.h>
2 #include <analysis/utility/DecayTree.h>
3 #include <analysis/utility/DecayForest.h>
5 #include <gtest/gtest.h>
13 TEST(DecayNodeTest, Constructor)
20 EXPECT_EQ(photon_1.pdg, 22);
21 EXPECT_EQ(photon_1.daughters.size(), 0);
23 EXPECT_EQ(pi0.pdg, 111);
24 EXPECT_EQ(pi0.daughters.size(), 2);
28 TEST(DecayNodeTest, FindDecay)
33 DecayNode pi0_1(111, {photon_1, photon_2});
46 EXPECT_TRUE(D_1.find_decay(D_1));
47 EXPECT_TRUE(D_1.find_decay(D_2));
48 EXPECT_FALSE(D_1.find_decay(D_3));
49 EXPECT_TRUE(D_1.find_decay(pi0_1));
50 EXPECT_TRUE(D_1.find_decay(pi0_2));
51 EXPECT_FALSE(D_1.find_decay(pi0_3));
53 EXPECT_TRUE(D_2.find_decay(D_1));
54 EXPECT_TRUE(D_2.find_decay(D_2));
55 EXPECT_TRUE(D_2.find_decay(D_3));
56 EXPECT_TRUE(D_2.find_decay(pi0_1));
57 EXPECT_TRUE(D_2.find_decay(pi0_2));
58 EXPECT_TRUE(D_2.find_decay(pi0_3));
60 EXPECT_FALSE(D_3.find_decay(D_1));
61 EXPECT_TRUE(D_3.find_decay(D_2));
62 EXPECT_TRUE(D_3.find_decay(D_3));
63 EXPECT_FALSE(D_3.find_decay(pi0_1));
64 EXPECT_TRUE(D_3.find_decay(pi0_2));
65 EXPECT_TRUE(D_3.find_decay(pi0_3));
67 EXPECT_TRUE(pi0_1.find_decay(photon_1));
68 EXPECT_TRUE(pi0_1.find_decay(photon_2));
69 EXPECT_TRUE(pi0_1.find_decay(photon_3));
70 EXPECT_FALSE(pi0_1.find_decay(e_1));
73 TEST(DecayTreeTest, FindDecay)
83 DecayTree D_1(
"321 (--> 11 111 (--> 22 22))");
85 DecayTree D_3(
"321 (--> 11 111 (--> 11 -11))");
87 EXPECT_TRUE(D_1.find_decay(D_1));
88 EXPECT_TRUE(D_1.find_decay(D_2));
89 EXPECT_FALSE(D_1.find_decay(D_3));
90 EXPECT_TRUE(D_1.find_decay(pi0_1));
91 EXPECT_TRUE(D_1.find_decay(pi0_2));
92 EXPECT_FALSE(D_1.find_decay(pi0_3));
94 EXPECT_TRUE(D_2.find_decay(D_1));
95 EXPECT_TRUE(D_2.find_decay(D_2));
96 EXPECT_TRUE(D_2.find_decay(D_3));
97 EXPECT_TRUE(D_2.find_decay(pi0_1));
98 EXPECT_TRUE(D_2.find_decay(pi0_2));
99 EXPECT_TRUE(D_2.find_decay(pi0_3));
101 EXPECT_FALSE(D_3.find_decay(D_1));
102 EXPECT_TRUE(D_3.find_decay(D_2));
103 EXPECT_TRUE(D_3.find_decay(D_3));
104 EXPECT_FALSE(D_3.find_decay(pi0_1));
105 EXPECT_TRUE(D_3.find_decay(pi0_2));
106 EXPECT_TRUE(D_3.find_decay(pi0_3));
108 EXPECT_TRUE(pi0_1.find_decay(photon_1));
109 EXPECT_FALSE(pi0_1.find_decay(e_1));
110 EXPECT_TRUE(pi0_3.find_decay(e_2));
114 TEST(DecayTreeTest, IsValid)
119 EXPECT_TRUE(photon_1.isValid());
120 EXPECT_TRUE(pi0_1.isValid());
123 EXPECT_FALSE(no_match.isValid());
127 TEST(DecayTreeTest, MatchSymbolPosition)
130 DecayTree D_0(
"321 (--> 11 111 (--> 11 -11))");
131 DecayTree D_1(
"321 (--> 11 111 (--> ^11 -11))");
132 DecayTree D_2(
"321 (--> ^11 111 (--> 11 -11))");
133 DecayTree D_3(
"^321 (--> 11 111 (--> 11 -11))");
135 EXPECT_EQ(D_0.getMatchSymbolPosition(), -1);
136 EXPECT_EQ(D_0.getNumberOfDecayNodes(), 5);
138 EXPECT_EQ(D_1.getMatchSymbolPosition(), 3);
139 EXPECT_EQ(D_1.getNumberOfDecayNodes(), 5);
140 EXPECT_EQ(D_1.getDecayNode(3).pdg, 11);
141 EXPECT_EQ(D_1.getDecayNode(3).daughters.size(), 0);
143 EXPECT_EQ(D_2.getMatchSymbolPosition(), 1);
144 EXPECT_EQ(D_2.getNumberOfDecayNodes(), 5);
145 EXPECT_EQ(D_2.getDecayNode(1).pdg, 11);
146 EXPECT_EQ(D_2.getDecayNode(1).daughters.size(), 0);
148 EXPECT_EQ(D_3.getMatchSymbolPosition(), 0);
149 EXPECT_EQ(D_3.getNumberOfDecayNodes(), 5);
150 EXPECT_EQ(D_3.getDecayNode(0).pdg, 321);
151 EXPECT_EQ(D_3.getDecayNode(0).daughters.size(), 2);
155 TEST(DecayTreeTest, Constructor)
159 EXPECT_EQ(photon.getNumberOfDecayNodes(), 1);
160 EXPECT_EQ(photon.getDecayNode(0).pdg, 22);
161 EXPECT_EQ(photon.getDecayNode(0).daughters.size(), 0);
164 EXPECT_EQ(pi0.getNumberOfDecayNodes(), 3);
165 EXPECT_EQ(pi0.getDecayNode(0).pdg, 111);
166 EXPECT_EQ(pi0.getDecayNode(0).daughters.size(), 2);
167 EXPECT_EQ(pi0.getDecayNode(1).pdg, 22);
168 EXPECT_EQ(pi0.getDecayNode(1).daughters.size(), 0);
169 EXPECT_EQ(pi0.getDecayNode(2).pdg, 22);
170 EXPECT_EQ(pi0.getDecayNode(2).daughters.size(), 0);
172 DecayTree D(
"321 (--> 11 111 (--> 11 -11))");
173 EXPECT_EQ(D.getNumberOfDecayNodes(), 5);
174 EXPECT_EQ(D.getDecayNode(0).pdg, 321);
175 EXPECT_EQ(D.getDecayNode(0).daughters.size(), 2);
176 EXPECT_EQ(D.getDecayNode(1).pdg, 11);
177 EXPECT_EQ(D.getDecayNode(1).daughters.size(), 0);
178 EXPECT_EQ(D.getDecayNode(2).pdg, 111);
179 EXPECT_EQ(D.getDecayNode(2).daughters.size(), 2);
180 EXPECT_EQ(D.getDecayNode(3).pdg, 11);
181 EXPECT_EQ(D.getDecayNode(3).daughters.size(), 0);
182 EXPECT_EQ(D.getDecayNode(4).pdg, -11);
183 EXPECT_EQ(D.getDecayNode(4).daughters.size(), 0);
187 TEST(DecayForestTest, Constructor)
189 DecayForest D(
"321 (--> 11 111 (--> 11 -11)) | No match | 111 (--> 11 -11) | 512 (--> 321 (--> 11 111 (--> 11 -11)) ) ",
false);
191 EXPECT_EQ(D.getNumberOfTrees(), 4);
192 EXPECT_EQ(D.getOriginalTreeNumber(), 2);
194 auto& reconstructed_decay_tree = D.getReconstructedTree();
195 EXPECT_EQ(reconstructed_decay_tree.getNumberOfDecayNodes(), 5);
196 EXPECT_EQ(reconstructed_decay_tree.getDecayNode(0).pdg, 321);
198 auto& no_match_decay_tree = D.getTree(1);
199 EXPECT_FALSE(no_match_decay_tree.isValid());
201 auto& original_decay_tree = D.getOriginalTree();
202 EXPECT_TRUE(original_decay_tree.isValid());
203 EXPECT_EQ(original_decay_tree.getDecayNode(0).pdg, 111);
207 TEST(DecayForestTest, SaveMemory)
209 DecayForest D(
"321 (--> 11 111 (--> 11 -11)) | No match | 111 (--> 11 -11) | 512 (--> 321 (--> 11 111 (--> 11 -11)) ) ",
true);
211 EXPECT_EQ(D.getNumberOfTrees(), 3);
212 EXPECT_EQ(D.getOriginalTreeNumber(), 2);
214 auto& reconstructed_decay_tree = D.getReconstructedTree();
215 EXPECT_EQ(reconstructed_decay_tree.getNumberOfDecayNodes(), 5);
216 EXPECT_EQ(reconstructed_decay_tree.getDecayNode(0).pdg, 321);
218 auto& no_match_decay_tree = D.getTree(1);
219 EXPECT_FALSE(no_match_decay_tree.isValid());
221 auto& original_decay_tree = D.getOriginalTree();
222 EXPECT_TRUE(original_decay_tree.isValid());
223 EXPECT_EQ(original_decay_tree.getDecayNode(0).pdg, 111);
227 TEST(DecayForestTest, FindB2TauNuDecay)
230 Y(
" 300553 (--> -521 (--> 15 (--> -211)) 521 (--> -423 (--> -421 (--> 321 11) 22) 211 211 -211 111 (--> 22 22))) | ^300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) ^-521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> ^15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 ^-211 111 (--> 22 22)) -16)) | 300553 (--> ^521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> ^-423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> ^-421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> ^321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 ^11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) ^22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> ^211 111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) -211) ^211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 22)) ^-211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 ^111 (--> 22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> ^22 22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16)) | 300553 (--> 521 (--> -423 (--> -421 (--> 321 11 -12) 22) 10223 (--> 213 (--> 211 111 (--> 22 ^22)) -211) 211) -521 (--> 15 (--> 16 -211 111 (--> 22 22)) -16))");
232 DecayTree b2taunu_cc(
"521 (--> -15 16)");
234 DecayTree b2taunu2e(
"-521 (--> 15 (11 -12 16) -16)");
235 DecayTree b2taunu2rho(
"-521 (--> 15 (16 -211 111 (--> 22 22)) -16)");
237 EXPECT_FALSE(Y.getOriginalTree().find_decay(b2taunu_cc));
238 EXPECT_TRUE(Y.getOriginalTree().find_decay(b2taunu));
239 EXPECT_FALSE(Y.getOriginalTree().find_decay(b2taunu2e));
240 EXPECT_TRUE(Y.getOriginalTree().find_decay(b2taunu2rho));
244 TEST(DecayForestTest, RemoveRadiativePhotons)
246 DecayForest B(
"521 (--> -421 (--> 325 (--> 321 111 (--> 22 22)) -211) -13 14 22)",
false,
true);
247 DecayForest B2(
"521 (--> -11 12 22)",
false,
true);
248 DecayForest B3(
"521 (--> -11 12 22)",
false,
false);
250 DecayTree case1(
" 521 (--> -421 (--> 325 (--> 321 111 (--> 22 22)) -211) -13 14)",
true);
251 DecayTree case2(
" 521 (--> -11 12 22)",
true);
252 DecayTree case3(
" 521 (--> -11 12 22)",
false);
253 DecayTree case4(
" 521 (--> -11 12)",
false);
256 DecayTree case5(
" 521 (--> -11 12 22)",
false);
257 DecayTree case6(
" 521 (--> -11 12 22)",
true);
258 DecayTree case7(
" 521 (--> -11 12)",
false);
260 EXPECT_TRUE(B.getOriginalTree().find_decay(case1));
262 EXPECT_TRUE(B2.getOriginalTree().find_decay(case2));
263 EXPECT_FALSE(B2.getOriginalTree().find_decay(case3));
264 EXPECT_TRUE(B2.getOriginalTree().find_decay(case4));
266 EXPECT_TRUE(B3.getOriginalTree().find_decay(case5));
267 EXPECT_FALSE(B3.getOriginalTree().find_decay(case6));
268 EXPECT_FALSE(B3.getOriginalTree().find_decay(case7));