ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigHypothesis
TrigHLTJetHypoUnitTests
tests
JetGroupReducerTest.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "gtest/gtest.h"
6
#include "
TrigHLTJetHypo/../src/JetGroupReducer.h
"
7
#include <vector>
8
#include <map>
9
10
using
res
= std::pair<std::vector<unsigned int>,
bool
>;
11
using
vec
= std::vector<unsigned int>;
12
13
TEST
(JetGroupReducerTester,
empty
) {
14
std::vector<std::size_t> siblings;
15
CondInd2JetGroupsInds
satisfiedBy;
16
JetGroupInd2ElemInds
jg2elem;
17
18
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
19
20
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
21
22
EXPECT_TRUE(jgr.
valid
());
23
EXPECT_TRUE(jgr.
next
(collector).empty());
24
}
25
26
TEST
(JetGroupReducerTester, emptyCondition) {
27
std::vector<std::size_t> siblings{1, 2, 3};
28
CondInd2JetGroupsInds
satisfiedBy;
29
satisfiedBy[0] = std::vector<std::size_t> {0, 1, 2};
30
satisfiedBy[1] = std::vector<std::size_t> {};
31
satisfiedBy[2] = std::vector<std::size_t> {3, 4, 5};
32
JetGroupInd2ElemInds
jg2elem;
33
34
35
36
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
37
38
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
39
40
EXPECT_TRUE(jgr.
valid
());
41
EXPECT_TRUE(jgr.
next
(collector).empty());
42
}
43
44
45
TEST
(JetGroupReducerTester, one_condition_elem) {
46
47
// condition is satisfied by an elementary jet group
48
std::vector<std::size_t> siblings{1};
49
50
CondInd2JetGroupsInds
satisfiedBy;
51
satisfiedBy[1] = std::vector<std::size_t> {0};
52
JetGroupInd2ElemInds
jg2elem;
53
jg2elem[0] = std::vector<std::size_t> {0};
54
jg2elem[1] = std::vector<std::size_t> {1};
55
jg2elem[2] = std::vector<std::size_t> {0, 1};
56
57
58
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
59
60
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
61
62
auto
exp = std::vector<std::size_t>{0};
63
EXPECT_EQ(jgr.
next
(collector), exp);
64
EXPECT_TRUE(jgr.
next
(collector).empty());
65
}
66
67
68
TEST
(JetGroupReducerTester, one_condition_non_elem) {
69
70
// condition is satisfied by an non-elementary jet group
71
std::vector<std::size_t> siblings{1};
72
73
CondInd2JetGroupsInds
satisfiedBy;
74
satisfiedBy[1] = std::vector<std::size_t> {2};
75
JetGroupInd2ElemInds
jg2elem;
76
jg2elem[0] = std::vector<std::size_t> {0};
77
jg2elem[1] = std::vector<std::size_t> {1};
78
jg2elem[2] = std::vector<std::size_t> {0, 1};
79
80
81
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
82
83
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
84
85
auto
exp = std::vector<std::size_t>{0, 1};
86
EXPECT_EQ(jgr.
next
(collector), exp);
87
EXPECT_TRUE(jgr.
next
(collector).empty());
88
}
89
90
TEST
(JetGroupReducerTester, two_conditions_nooverlap_elem_elem) {
91
std::vector<std::size_t> siblings{1, 2};
92
93
CondInd2JetGroupsInds
satisfiedBy;
94
satisfiedBy[1] = std::vector<std::size_t> {0, 1};
95
satisfiedBy[2] = std::vector<std::size_t> {2};
96
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
97
98
JetGroupInd2ElemInds
jg2elem;
99
100
jg2elem[0] = std::vector<std::size_t> {0};
101
jg2elem[1] = std::vector<std::size_t> {1};
102
jg2elem[2] = std::vector<std::size_t> {2};
103
jg2elem[3] = std::vector<std::size_t> {3};
104
jg2elem[4] = std::vector<std::size_t> {4};
105
jg2elem[5] = std::vector<std::size_t> {5};
106
jg2elem[6] = std::vector<std::size_t> {0, 1};
107
jg2elem[7] = std::vector<std::size_t> {2, 3};
108
jg2elem[8] = std::vector<std::size_t> {4, 5};
109
110
111
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
112
113
auto
exp = std::vector<std::size_t>{0, 1, 2};
114
EXPECT_EQ(jgr.
next
(collector), exp);
115
EXPECT_TRUE(jgr.
next
(collector).empty());
116
}
117
118
TEST
(JetGroupReducerTester, two_conditions_nooverlap_elem_non_elem) {
119
std::vector<std::size_t> siblings{1, 2};
120
121
CondInd2JetGroupsInds
satisfiedBy;
122
satisfiedBy[1] = std::vector<std::size_t> {0, 1};
123
satisfiedBy[2] = std::vector<std::size_t> {7};
124
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
125
126
JetGroupInd2ElemInds
jg2elem;
127
128
jg2elem[0] = std::vector<std::size_t> {0};
129
jg2elem[1] = std::vector<std::size_t> {1};
130
jg2elem[2] = std::vector<std::size_t> {2};
131
jg2elem[3] = std::vector<std::size_t> {3};
132
jg2elem[4] = std::vector<std::size_t> {4};
133
jg2elem[5] = std::vector<std::size_t> {5};
134
jg2elem[6] = std::vector<std::size_t> {0, 1};
135
jg2elem[7] = std::vector<std::size_t> {2, 3};
136
jg2elem[8] = std::vector<std::size_t> {4, 5};
137
138
139
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
140
141
auto
exp = std::vector<std::size_t>{0, 1, 2, 3};
142
EXPECT_EQ(jgr.
next
(collector), exp);
143
EXPECT_TRUE(jgr.
next
(collector).empty());
144
}
145
146
TEST
(JetGroupReducerTester, two_conditions_overlap_elem_non_elem) {
147
std::vector<std::size_t> siblings{1, 2};
148
149
CondInd2JetGroupsInds
satisfiedBy;
150
satisfiedBy[1] = std::vector<std::size_t> {0, 1};
151
satisfiedBy[2] = std::vector<std::size_t> {6};
152
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
153
154
JetGroupInd2ElemInds
jg2elem;
155
156
jg2elem[0] = std::vector<std::size_t> {0};
157
jg2elem[1] = std::vector<std::size_t> {1};
158
jg2elem[2] = std::vector<std::size_t> {2};
159
jg2elem[3] = std::vector<std::size_t> {3};
160
jg2elem[4] = std::vector<std::size_t> {4};
161
jg2elem[5] = std::vector<std::size_t> {5};
162
jg2elem[6] = std::vector<std::size_t> {0, 1};
163
jg2elem[7] = std::vector<std::size_t> {2, 3};
164
jg2elem[8] = std::vector<std::size_t> {4, 5};
165
166
167
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
168
169
auto
exp = std::vector<std::size_t>{0, 1};
170
EXPECT_EQ(jgr.
next
(collector), exp);
171
EXPECT_TRUE(jgr.
next
(collector).empty());
172
}
173
174
TEST
(JetGroupReducerTester, two_conditions_no_overlap_non_elem_non_elem) {
175
std::vector<std::size_t> siblings{1, 2};
176
177
CondInd2JetGroupsInds
satisfiedBy;
178
satisfiedBy[1] = std::vector<std::size_t> {6, 7};
179
satisfiedBy[2] = std::vector<std::size_t> {8};
180
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
181
182
JetGroupInd2ElemInds
jg2elem;
183
184
jg2elem[0] = std::vector<std::size_t> {0};
185
jg2elem[1] = std::vector<std::size_t> {1};
186
jg2elem[2] = std::vector<std::size_t> {2};
187
jg2elem[3] = std::vector<std::size_t> {3};
188
jg2elem[4] = std::vector<std::size_t> {4};
189
jg2elem[5] = std::vector<std::size_t> {5};
190
jg2elem[6] = std::vector<std::size_t> {0, 1};
191
jg2elem[7] = std::vector<std::size_t> {2, 3};
192
jg2elem[8] = std::vector<std::size_t> {4, 5};
193
194
195
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
196
197
auto
exp = std::vector<std::size_t>{0, 1, 2, 3, 4, 5};
198
EXPECT_EQ(jgr.
next
(collector), exp);
199
EXPECT_TRUE(jgr.
next
(collector).empty());
200
}
201
202
TEST
(JetGroupReducerTester, two_conditions_overlap_non_elem_non_elem) {
203
std::vector<std::size_t> siblings{1, 2};
204
205
CondInd2JetGroupsInds
satisfiedBy;
206
satisfiedBy[1] = std::vector<std::size_t> {6, 7};
207
satisfiedBy[2] = std::vector<std::size_t> {9};
208
auto
collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr
);
209
210
JetGroupInd2ElemInds
jg2elem;
211
212
jg2elem[0] = std::vector<std::size_t> {0};
213
jg2elem[1] = std::vector<std::size_t> {1};
214
jg2elem[2] = std::vector<std::size_t> {2};
215
jg2elem[3] = std::vector<std::size_t> {3};
216
jg2elem[4] = std::vector<std::size_t> {4};
217
jg2elem[5] = std::vector<std::size_t> {5};
218
jg2elem[6] = std::vector<std::size_t> {0, 1};
219
jg2elem[7] = std::vector<std::size_t> {2, 3};
220
jg2elem[8] = std::vector<std::size_t> {4, 5};
221
jg2elem[9] = std::vector<std::size_t> {1, 5};
222
223
224
JetGroupReducer
jgr(siblings, satisfiedBy, jg2elem);
225
226
auto
exp = std::vector<std::size_t>{0, 1, 2, 3, 5};
227
EXPECT_EQ(jgr.
next
(collector), exp);
228
EXPECT_TRUE(jgr.
next
(collector).empty());
229
}
230
vec
std::vector< size_t > vec
Definition
CombinationsGeneratorTest.cxx:9
res
std::pair< std::vector< unsigned int >, bool > res
Definition
JetGroupProductTest.cxx:11
CondInd2JetGroupsInds
std::map< int, std::vector< std::size_t > > CondInd2JetGroupsInds
Definition
JetGroupProduct.h:15
TEST
TEST(JetGroupReducerTester, empty)
Definition
JetGroupReducerTest.cxx:13
JetGroupReducer.h
empty
static const Attributes_t empty
Definition
XmlStreamer.cxx:16
JetGroupReducer
Definition
JetGroupReducer.h:29
JetGroupReducer::valid
virtual bool valid() const override
Definition
JetGroupReducer.cxx:93
JetGroupReducer::next
virtual std::vector< std::size_t > next(const Collector &) override
Definition
JetGroupReducer.cxx:77
JetGroupInd2ElemInds
std::map< int, std::vector< std::size_t > > JetGroupInd2ElemInds
Definition
elementalJetGroups.h:11
Generated on
for ATLAS Offline Software by
1.17.0