5 #include "gtest/gtest.h"
9 using vec = std::vector<std::size_t>;
11 TEST(JetGroupProductFactoryTester, nosiblings) {
12 std::vector<std::size_t> siblings{};
15 satisfiedBy[0] = std::vector<std::size_t>();
17 std::vector<std::size_t> condMult{1};
18 std::vector<unsigned int> condCap{0};
19 std::vector<int> condClique{1};
23 std::size_t parCapacity{0};
25 bool simpleTree{
true};
26 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
38 EXPECT_TRUE(jgp !=
nullptr);
39 EXPECT_TRUE(jgp->valid());
40 EXPECT_TRUE(jgp->next(collector).empty());
48 TEST(JetGroupProductFactoryTester, one_clique_fail) {
49 std::vector<std::size_t> siblings{1, 2};
52 satisfiedBy[0] = std::vector<std::size_t> {};
53 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
54 satisfiedBy[2] = std::vector<std::size_t> {0, 1, 2};
56 std::vector<std::size_t> condMult{1
u, 5
u, 1
u};
57 std::vector<unsigned int> condCap{0, 1, 1};
58 std::vector<int> condClique{-1, 0, 0};
61 jg2elemjgs[0] = std::vector<std::size_t> {0};
62 jg2elemjgs[1] = std::vector<std::size_t> {1};
63 jg2elemjgs[2] = std::vector<std::size_t> {2};
65 std::size_t parCapacity{0};
66 bool simpleTree{
true};
68 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
81 EXPECT_TRUE(jgp !=
nullptr);
82 EXPECT_TRUE(jgp->valid());
84 EXPECT_TRUE(jgp->next(collector).empty());
85 EXPECT_TRUE(jgp->next(collector).empty());
88 TEST(JetGroupProductFactoryTester, one_clique_pass) {
89 std::vector<std::size_t> siblings{1, 2};
94 satisfiedBy[0] = std::vector<std::size_t> {};
95 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2, 3, 4, 5};
96 satisfiedBy[2] = std::vector<std::size_t> {0, 1, 2, 3, 4, 5};
98 std::vector<std::size_t> condMult{1
u, 5
u, 1
u};
99 std::vector<unsigned int> condCap{0, 1, 1};
100 std::vector<int> condClique{-1, 0, 0};
103 jg2elemjgs[0] = std::vector<std::size_t> {0};
104 jg2elemjgs[1] = std::vector<std::size_t> {1};
105 jg2elemjgs[2] = std::vector<std::size_t> {2};
106 jg2elemjgs[3] = std::vector<std::size_t> {3};
107 jg2elemjgs[4] = std::vector<std::size_t> {4};
108 jg2elemjgs[5] = std::vector<std::size_t> {5};
111 std::size_t parCapacity{0};
112 bool simpleTree{
true};
114 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
126 EXPECT_TRUE(jgp !=
nullptr);
127 EXPECT_TRUE(jgp->valid());
130 EXPECT_EQ(jgp->next(collector), exp0);
131 EXPECT_TRUE(jgp->next(collector).empty());
132 EXPECT_TRUE(jgp->next(collector).empty());
135 TEST(JetGroupProductFactoryTester, njets_eq_nsiblings) {
136 std::vector<std::size_t> siblings{1, 2};
141 satisfiedBy[0] = std::vector<std::size_t> {};
142 satisfiedBy[1] = std::vector<std::size_t> {0,1};
143 satisfiedBy[2] = std::vector<std::size_t> {0,1};
145 std::vector<std::size_t> condMult{1
u, 1
u, 1
u};
146 std::vector<unsigned int> condCap{0, 1, 1};
147 std::vector<int> condClique{-1, 0, 1};
150 jg2elemjgs[0] = std::vector<std::size_t> {0};
151 jg2elemjgs[1] = std::vector<std::size_t> {1};
153 std::size_t parCapacity{0};
154 bool simpleTree{
true};
156 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
169 EXPECT_TRUE(jgp !=
nullptr);
170 EXPECT_TRUE(jgp->valid());
173 EXPECT_EQ(jgp->next(collector), exp0);
174 EXPECT_TRUE(jgp->next(collector).empty());
175 EXPECT_TRUE(jgp->next(collector).empty());
181 TEST(JetGroupProductFactoryTester, 3siblings_3jets_pass) {
182 std::vector<std::size_t> siblings{1, 2, 3};
185 satisfiedBy[0] = std::vector<std::size_t> {};
186 satisfiedBy[1] = std::vector<std::size_t> {0,1,2};
187 satisfiedBy[2] = std::vector<std::size_t> {0};
188 satisfiedBy[3] = std::vector<std::size_t> {1};
190 std::vector<std::size_t> condMult{1
u, 1
u, 1
u, 1
u};
191 std::vector<unsigned int> condCap{0, 1, 1, 1};
192 std::vector<int> condClique{-1, 0, 1, 2};
195 jg2elemjgs[0] = std::vector<std::size_t> {0};
196 jg2elemjgs[1] = std::vector<std::size_t> {1};
197 jg2elemjgs[2] = std::vector<std::size_t> {2};
199 std::size_t parCapacity{0};
200 bool simpleTree{
true};
202 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
213 EXPECT_TRUE(jgp !=
nullptr);
214 EXPECT_TRUE(jgp->valid());
217 EXPECT_EQ(jgp->next(collector), exp0);
218 EXPECT_TRUE(jgp->next(collector).empty());
219 EXPECT_TRUE(jgp->next(collector).empty());
222 TEST(JetGroupProductFactoryTester, 3siblings_3jets_fail) {
223 std::vector<std::size_t> siblings{1, 2, 3};
227 satisfiedBy[0] = std::vector<std::size_t> {};
228 satisfiedBy[1] = std::vector<std::size_t> {0,1,2};
229 satisfiedBy[2] = std::vector<std::size_t> {1};
230 satisfiedBy[3] = std::vector<std::size_t> {1};
232 std::vector<std::size_t> condMult{1
u, 1
u, 1
u, 1
u};
233 std::vector<unsigned int> condCap{0, 1, 1, 1};
234 std::vector<int> condClique{-1, 0, 1, 2};
237 jg2elemjgs[0] = std::vector<std::size_t> {0};
238 jg2elemjgs[1] = std::vector<std::size_t> {1};
239 jg2elemjgs[2] = std::vector<std::size_t> {2};
241 std::size_t parCapacity{0};
242 bool simpleTree{
true};
244 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
255 EXPECT_TRUE(jgp !=
nullptr);
256 EXPECT_TRUE(jgp->valid());
258 EXPECT_TRUE(jgp->next(collector).empty());
259 EXPECT_TRUE(jgp->next(collector).empty());
265 TEST(JetGroupProductFactoryTester, dijet_jets_overlap) {
266 std::vector<std::size_t> siblings{1, 2};
270 satisfiedBy[0] = std::vector<std::size_t> {};
271 satisfiedBy[1] = std::vector<std::size_t> {0, 1};
272 satisfiedBy[2] = std::vector<std::size_t> {0, 1};
274 std::vector<std::size_t> condMult{1
u, 1
u, 1
u};
275 std::vector<unsigned int> condCap{2, 1, 1};
276 std::vector<int> condClique{-1, 0, 0};
279 jg2elemjgs[0] = std::vector<std::size_t> {0};
280 jg2elemjgs[1] = std::vector<std::size_t> {1};
282 std::size_t parCapacity{2};
283 bool simpleTree{
false};
285 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
297 EXPECT_TRUE(jgp !=
nullptr);
298 EXPECT_TRUE(jgp->valid());
301 EXPECT_EQ(jgp->next(collector),
e0);
303 EXPECT_TRUE(jgp->next(collector).empty());
304 EXPECT_TRUE(jgp->next(collector).empty());
307 TEST(JetGroupProductFactoryTester, dijet_jets_no_overlap) {
308 std::vector<std::size_t> siblings{1, 2};
312 satisfiedBy[0] = std::vector<std::size_t> {};
313 satisfiedBy[1] = std::vector<std::size_t> {0, 1};
314 satisfiedBy[2] = std::vector<std::size_t> {2, 3};
316 std::vector<std::size_t> condMult{1
u, 1
u, 1
u};
317 std::vector<unsigned int> condCap{2, 1, 1};
318 std::vector<int> condClique{-1, 0, 0};
321 jg2elemjgs[0] = std::vector<std::size_t> {0};
322 jg2elemjgs[1] = std::vector<std::size_t> {1};
323 jg2elemjgs[2] = std::vector<std::size_t> {2};
324 jg2elemjgs[3] = std::vector<std::size_t> {3};
326 std::size_t parCapacity{2};
327 bool simpleTree{
false};
329 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
340 EXPECT_TRUE(jgp !=
nullptr);
341 EXPECT_TRUE(jgp->valid());
347 EXPECT_EQ(jgp->next(collector),
e0);
348 EXPECT_EQ(jgp->next(collector),
e1);
349 EXPECT_EQ(jgp->next(collector),
e2);
350 EXPECT_EQ(jgp->next(collector),
e3);
351 EXPECT_TRUE(jgp->next(collector).empty());
352 EXPECT_TRUE(jgp->next(collector).empty());
356 TEST(JetGroupProductFactoryTester, dijet_jets_some_overlap) {
357 std::vector<std::size_t> siblings{1, 2};
360 satisfiedBy[0] = std::vector<std::size_t> {};
361 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
362 satisfiedBy[2] = std::vector<std::size_t> {2, 3, 4};
364 std::vector<std::size_t> condMult{1
u, 1
u, 1
u};
365 std::vector<unsigned int> condCap{2, 1, 1};
366 std::vector<int> condClique{-1, 0, 0};
369 jg2elemjgs[0] = std::vector<std::size_t> {0};
370 jg2elemjgs[1] = std::vector<std::size_t> {1};
371 jg2elemjgs[2] = std::vector<std::size_t> {2};
372 jg2elemjgs[3] = std::vector<std::size_t> {3};
373 jg2elemjgs[4] = std::vector<std::size_t> {4};
375 std::size_t parCapacity{2};
376 bool simpleTree{
false};
378 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
389 EXPECT_TRUE(jgp !=
nullptr);
390 EXPECT_TRUE(jgp->valid());
401 EXPECT_EQ(jgp->next(collector),
e0);
402 EXPECT_EQ(jgp->next(collector),
e1);
403 EXPECT_EQ(jgp->next(collector),
e2);
404 EXPECT_EQ(jgp->next(collector),
e3);
405 EXPECT_EQ(jgp->next(collector),
e4);
406 EXPECT_EQ(jgp->next(collector), e5);
407 EXPECT_EQ(jgp->next(collector), e6);
408 EXPECT_EQ(jgp->next(collector), e7);
410 EXPECT_TRUE(jgp->next(collector).empty());
411 EXPECT_TRUE(jgp->next(collector).empty());
416 TEST(JetGroupProductFactoryTester, max_jet_0) {
418 satisfiedBy[0] = std::vector<std::size_t> {};
419 satisfiedBy[1] = std::vector<std::size_t> {0};
420 satisfiedBy[2] = std::vector<std::size_t> {0};
422 std::vector<std::size_t> siblings{1, 2};
424 EXPECT_EQ(0
u,
max_jet(siblings, satisfiedBy));
427 TEST(JetGroupProductFactoryTester, max_jet_1) {
429 satisfiedBy[0] = std::vector<std::size_t> {};
430 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
431 satisfiedBy[2] = std::vector<std::size_t> {2, 3, 4};
433 std::vector<std::size_t> siblings{1, 2};
435 EXPECT_EQ(4
u,
max_jet(siblings, satisfiedBy));
439 TEST(JetGroupProductFactoryTester, willpass_fail_0) {
441 satisfiedBy[0] = std::vector<std::size_t> {};
442 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
443 satisfiedBy[2] = std::vector<std::size_t> {1};
444 satisfiedBy[3] = std::vector<std::size_t> {1};
446 std::vector<std::size_t> condMult{1, 1, 1, 1};
448 std::vector<std::size_t> siblings{1, 2, 3};
453 TEST(JetGroupProductFactoryTester, willpass_fail_1) {
455 satisfiedBy[0] = std::vector<std::size_t> {};
456 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
457 satisfiedBy[2] = std::vector<std::size_t> {2};
458 satisfiedBy[3] = std::vector<std::size_t> {1};
460 std::vector<std::size_t> condMult{1, 2, 1, 1};
462 std::vector<std::size_t> siblings{1, 2, 3};
468 TEST(JetGroupProductFactoryTester, willpass_fail_2) {
470 satisfiedBy[0] = std::vector<std::size_t> {};
471 satisfiedBy[1] = std::vector<std::size_t> {};
472 satisfiedBy[2] = std::vector<std::size_t> {};
473 satisfiedBy[3] = std::vector<std::size_t> {};
475 std::vector<std::size_t> condMult{1, 2, 1, 1};
477 std::vector<std::size_t> siblings{1, 2, 3};
482 TEST(JetGroupProductFactoryTester, willpass_pass_0) {
484 satisfiedBy[0] = std::vector<std::size_t> {};
485 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
486 satisfiedBy[2] = std::vector<std::size_t> {2};
487 satisfiedBy[3] = std::vector<std::size_t> {1};
489 std::vector<std::size_t> condMult{1, 1, 1, 1};
491 std::vector<std::size_t> siblings{1, 2, 3};
496 TEST(JetGroupProductFactoryTester, willpass_pass_1) {
498 satisfiedBy[0] = std::vector<std::size_t> {};
499 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2, 3};
500 satisfiedBy[2] = std::vector<std::size_t> {0, 1, 2};
502 std::vector<std::size_t> condMult{1, 2, 2};
504 std::vector<std::size_t> siblings{1, 2};