ATLAS Offline Software
Loading...
Searching...
No Matches
JetGroupProductTest.cxx File Reference
#include "gtest/gtest.h"
#include "TrigHLTJetHypo/../src/JetGroupProduct.h"
#include "TrigHLTJetHypo/../src/DebugInfoCollector.h"
#include <vector>
#include <map>
Include dependency graph for JetGroupProductTest.cxx:

Go to the source code of this file.

Typedefs

using res = std::pair<std::vector<unsigned int>, bool>
using vec = std::vector<unsigned int>

Functions

 TEST (JetGroupProductTester, empty)
 TEST (JetGroupProductTester, onecondition)
 TEST (JetGroupProductTester, repeatedcond)
 TEST (JetGroupProductTester, twocond)
 TEST (JetGroupProductTester, reallife)

Typedef Documentation

◆ res

using res = std::pair<std::vector<unsigned int>, bool>

Definition at line 11 of file JetGroupProductTest.cxx.

◆ vec

using vec = std::vector<unsigned int>

Definition at line 12 of file JetGroupProductTest.cxx.

Function Documentation

◆ TEST() [1/5]

TEST ( JetGroupProductTester ,
empty  )

Definition at line 14 of file JetGroupProductTest.cxx.

14 {
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}
std::map< int, std::vector< std::size_t > > CondInd2JetGroupsInds
std::map< int, std::vector< std::size_t > > JetGroupInd2ElemInds

◆ TEST() [2/5]

TEST ( JetGroupProductTester ,
onecondition  )

Definition at line 28 of file JetGroupProductTest.cxx.

28 {
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}

◆ TEST() [3/5]

TEST ( JetGroupProductTester ,
reallife  )

Definition at line 128 of file JetGroupProductTest.cxx.

128 {
129 std::vector<std::size_t> siblings{1, 2};
130
131 CondInd2JetGroupsInds satisfiedBy;
132 satisfiedBy[0] = std::vector<std::size_t>();
133 satisfiedBy[1] = std::vector<std::size_t> {0, 1, 2};
134 satisfiedBy[2] = std::vector<std::size_t> {
135 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13,
136 14, 15, 17, 19, 21, 25, 26, 29, 33};
137
138 std::vector<std::size_t> condMult{1, 1, 3};
139
140 JetGroupInd2ElemInds jg2elemjgs;
141 for (const auto& i : satisfiedBy[2]){
142 jg2elemjgs[i] = std::vector<std::size_t> {i};
143 }
144 JetGroupProduct jgp(siblings, satisfiedBy, condMult, jg2elemjgs);
145
146 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(nullptr);
147
148 EXPECT_TRUE(jgp.valid());
149
150 std::size_t ipass{0};
151
152 while (true) {
153 auto indices = jgp.next(collector);
154 if (indices.empty()){break;}
155 ++ipass;
156 }
157
158 // 2925 = 3*C(21,3) - overlaps and duplicates
159 EXPECT_EQ (ipass, 2925u);
160
161}
std::pair< long int, long int > indices

◆ TEST() [4/5]

TEST ( JetGroupProductTester ,
repeatedcond  )

Definition at line 60 of file JetGroupProductTest.cxx.

60 {
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}

◆ TEST() [5/5]

TEST ( JetGroupProductTester ,
twocond  )

Definition at line 93 of file JetGroupProductTest.cxx.

93 {
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 if(collector) {collector->write();}
125
126}