ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigHypothesis
TrigHLTJetHypoUnitTests
tests
JetGroupProductTest.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "gtest/gtest.h"
6
#include "
TrigHLTJetHypo/../src/JetGroupProduct.h
"
7
#include "
TrigHLTJetHypo/../src/DebugInfoCollector.h
"
8
#include <vector>
9
#include <map>
10
11
using
res
= std::pair<std::vector<unsigned int>,
bool
>;
12
using
vec
= std::vector<unsigned int>;
13
14
TEST
(JetGroupProductTester,
empty
) {
15
std::vector<std::size_t> siblings;
16
CondInd2JetGroupsInds
satisfiedBy;
17
std::vector<std::size_t> condMult;
18
JetGroupInd2ElemInds
jg2elemjgs;
19
20
JetGroupProduct
jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
21
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
22
23
EXPECT_FALSE(jgp.
valid
());
24
EXPECT_TRUE((jgp.
next
(collector)).empty());
25
}
26
27
28
TEST
(JetGroupProductTester, onecondition) {
29
std::vector<std::size_t> siblings{1};
30
31
CondInd2JetGroupsInds
satisfiedBy;
32
satisfiedBy[0] = std::vector<std::size_t>();
33
satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
34
35
std::vector<std::size_t> condMult{0, 1};
36
37
JetGroupInd2ElemInds
jg2elemjgs;
38
jg2elemjgs[0] = std::vector<std::size_t> {0};
39
jg2elemjgs[1] = std::vector<std::size_t> {1};
40
jg2elemjgs[2] = std::vector<std::size_t> {2};
41
42
JetGroupProduct
jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
43
44
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
45
46
EXPECT_TRUE(jgp.
valid
());
47
48
auto
exp = std::vector<std::size_t>{0};
49
EXPECT_EQ(jgp.
next
(collector), exp);
50
51
exp = std::vector<std::size_t>{1};
52
EXPECT_EQ(jgp.
next
(collector), exp);
53
54
exp = std::vector<std::size_t>{2};
55
EXPECT_EQ(jgp.
next
(collector), exp);
56
57
EXPECT_TRUE(jgp.
next
(collector).empty());
58
}
59
60
TEST
(JetGroupProductTester, repeatedcond) {
61
std::vector<std::size_t> siblings{1};
62
63
CondInd2JetGroupsInds
satisfiedBy;
64
satisfiedBy[0] = std::vector<std::size_t>();
65
satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
66
67
std::vector<std::size_t> condMult{1, 2};
68
69
JetGroupInd2ElemInds
jg2elemjgs;
70
jg2elemjgs[0] = std::vector<std::size_t> {0};
71
jg2elemjgs[1] = std::vector<std::size_t> {1};
72
jg2elemjgs[2] = std::vector<std::size_t> {2};
73
74
JetGroupProduct
jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
75
76
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
77
78
EXPECT_TRUE(jgp.
valid
());
79
80
auto
exp = std::vector<std::size_t>{0, 1};
81
EXPECT_EQ(jgp.
next
(collector), exp);
82
83
exp = std::vector<std::size_t>{0, 2};
84
EXPECT_EQ(jgp.
next
(collector), exp);
85
86
87
exp = std::vector<std::size_t>{1, 2};
88
EXPECT_EQ(jgp.
next
(collector), exp);
89
90
EXPECT_TRUE(jgp.
next
(collector).empty());
91
}
92
93
TEST
(JetGroupProductTester, twocond) {
94
std::vector<std::size_t> siblings{1, 2};
95
96
CondInd2JetGroupsInds
satisfiedBy;
97
satisfiedBy[0] = std::vector<std::size_t>();
98
satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
99
satisfiedBy[2] = std::vector<std::size_t> {0, 1, 2};
100
101
std::vector<std::size_t> condMult{1, 1, 1};
102
103
JetGroupInd2ElemInds
jg2elemjgs;
104
jg2elemjgs[0] = std::vector<std::size_t> {0};
105
jg2elemjgs[1] = std::vector<std::size_t> {1};
106
jg2elemjgs[2] = std::vector<std::size_t> {2};
107
108
JetGroupProduct
jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
109
110
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
111
112
EXPECT_TRUE(jgp.
valid
());
113
114
auto
exp = std::vector<std::size_t>{0, 1};
115
EXPECT_EQ(jgp.
next
(collector), exp);
116
117
exp = std::vector<std::size_t>{0, 2};
118
EXPECT_EQ(jgp.
next
(collector), exp);
119
120
exp = std::vector<std::size_t>{1, 2};
121
EXPECT_EQ(jgp.
next
(collector), exp);
122
123
EXPECT_TRUE(jgp.
next
(collector).empty());
124
125
}
126
127
TEST
(JetGroupProductTester, reallife) {
128
std::vector<std::size_t> siblings{1, 2};
129
130
CondInd2JetGroupsInds
satisfiedBy;
131
satisfiedBy[0] = std::vector<std::size_t>();
132
satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
133
satisfiedBy[2] = std::vector<std::size_t> {
134
0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13,
135
14, 15, 17, 19, 21, 25, 26, 29, 33};
136
137
std::vector<std::size_t> condMult{1, 1, 3};
138
139
JetGroupInd2ElemInds
jg2elemjgs;
140
for
(
const
auto
& i : satisfiedBy[2]){
141
jg2elemjgs[i] = std::vector<std::size_t> {i};
142
}
143
JetGroupProduct
jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
144
145
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
146
147
EXPECT_TRUE(jgp.
valid
());
148
149
std::size_t ipass{0};
150
151
while
(
true
) {
152
auto
indices = jgp.
next
(collector);
153
if
(indices.empty()){
break
;}
154
++ipass;
155
}
156
157
// 2925 = 3*C(21,3) - overlaps and duplicates
158
EXPECT_EQ (ipass, 2925u);
159
160
}
161
vec
std::vector< size_t > vec
Definition
CombinationsGeneratorTest.cxx:9
DebugInfoCollector.h
TEST
TEST(JetGroupProductTester, empty)
Definition
JetGroupProductTest.cxx:14
res
std::pair< std::vector< unsigned int >, bool > res
Definition
JetGroupProductTest.cxx:11
JetGroupProduct.h
CondInd2JetGroupsInds
std::map< int, std::vector< std::size_t > > CondInd2JetGroupsInds
Definition
JetGroupProduct.h:15
empty
static const Attributes_t empty
Definition
XmlStreamer.cxx:16
JetGroupProduct
Definition
JetGroupProduct.h:20
JetGroupProduct::next
virtual std::vector< std::size_t > next(const Collector &) override
Definition
JetGroupProduct.cxx:60
JetGroupProduct::valid
virtual bool valid() const override
Definition
JetGroupProduct.cxx:127
JetGroupInd2ElemInds
std::map< int, std::vector< std::size_t > > JetGroupInd2ElemInds
Definition
elementalJetGroups.h:11
Generated on
for ATLAS Offline Software by
1.17.0