ATLAS Offline Software
make_jetstreamTest.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"
7 #include <vector>
8 #include <memory>
9 
10 using vec = std::vector<std::size_t>;
11 
12 TEST(make_jetstreamTester, SimpleSimpleSimpleChain) {
13 
14  std::vector<std::vector<std::size_t>> v;
15  v.push_back(std::vector<std::size_t>{1,2});
16  v.push_back(std::vector<std::size_t>{3,4, 5});
17  v.push_back(std::vector<std::size_t>{6,7});
18 
19  std::vector<std::size_t> repeats{1,1,1};
20 
21  std::size_t sid{0};
22 
23  auto stream = make_jetstream(v, repeats, sid);
24 
25  JetStreamer streamer(std::move(stream));
26 
27  vec v0{1, 3, 6};
28  vec v1{2, 3, 6};
29  vec v2{1, 4, 6};
30  vec v3{2, 4, 6};
31  vec v4{1, 5, 6};
32  vec v5{2, 5, 6};
33  vec v6{1, 3, 7};
34  vec v7{2, 3, 7};
35  vec v8{1, 4, 7};
36  vec v9{2, 4, 7};
37  vec v10{1, 5, 7};
38  vec v11{2, 5, 7};
39 
40 
41  EXPECT_EQ (v0, streamer.next());
42  EXPECT_EQ (v1, streamer.next());
43  EXPECT_EQ (v2, streamer.next());
44  EXPECT_EQ (v3, streamer.next());
45  EXPECT_EQ (v4, streamer.next());
46  EXPECT_EQ (v5, streamer.next());
47  EXPECT_EQ (v6, streamer.next());
48  EXPECT_EQ (v7, streamer.next());
49  EXPECT_EQ (v8, streamer.next());
50  EXPECT_EQ (v9, streamer.next());
51  EXPECT_EQ (v10, streamer.next());
52  EXPECT_EQ (v11, streamer.next());
53 
54  EXPECT_EQ (vec{}, streamer.next());
55 }
56 
57 
58 TEST(make_jetstreamTester, SimpleCompoundSimpleChain) {
59  std::vector<std::vector<std::size_t>> v;
60  v.push_back(std::vector<std::size_t>{1,2});
61  v.push_back(std::vector<std::size_t>{3,4, 5});
62  v.push_back(std::vector<std::size_t>{6,7});
63 
64  std::vector<std::size_t> repeats{1,2,1};
65 
66  std::size_t sid{0};
67 
68  auto stream = make_jetstream(v, repeats, sid);
69 
70  JetStreamer streamer(std::move(stream));
71 
72  vec v0{1, 3, 4, 6};
73  vec v1{2, 3, 4, 6};
74  vec v2{1, 3, 5, 6};
75  vec v3{2, 3, 5, 6};
76  vec v4{1, 4, 5, 6};
77  vec v5{2, 4, 5, 6};
78  vec v6{1, 3, 4, 7};
79  vec v7{2, 3, 4, 7};
80  vec v8{1, 3, 5, 7};
81  vec v9{2, 3, 5, 7};
82  vec v10{1, 4, 5, 7};
83  vec v11{2, 4, 5, 7};
84 
85  EXPECT_EQ (v0, streamer.next());
86  EXPECT_EQ (v1, streamer.next());
87  EXPECT_EQ (v2, streamer.next());
88  EXPECT_EQ (v3, streamer.next());
89  EXPECT_EQ (v4, streamer.next());
90  EXPECT_EQ (v5, streamer.next());
91  EXPECT_EQ (v6, streamer.next());
92  EXPECT_EQ (v7, streamer.next());
93  EXPECT_EQ (v8, streamer.next());
94  EXPECT_EQ (v9, streamer.next());
95  EXPECT_EQ (v10, streamer.next());
96  EXPECT_EQ (v11, streamer.next());
97 
98  EXPECT_EQ (vec{}, streamer.next());
99 }
100 
101 TEST(make_jetstreamTester, reallife) {
102  std::vector<std::vector<std::size_t>> v;
103  v.push_back(std::vector<std::size_t>{0, 1, 2});
104  v.push_back(std::vector<std::size_t>{
105  0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13,
106  14, 15, 17, 19, 21, 25, 26, 29, 33});
107 
108 
109 
110  std::vector<std::size_t> repeats{1,3};
111 
112  std::size_t sid{0};
113 
114  auto stream = make_jetstream(v, repeats, sid);
115 
116  JetStreamer streamer(std::move(stream));
117 
118  std::size_t ipass{0};
119 
120  while (true) {
121  auto indices = streamer.next();
122  if (indices.empty()){break;}
123  ++ipass;
124  }
125 
126  // 3990 = 3*C(21,3)
127  EXPECT_EQ (ipass, 3990u);
128 }
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
make_jetstream.h
parseMapping.v0
def v0
Definition: parseMapping.py:149
TEST
TEST(make_jetstreamTester, SimpleSimpleSimpleChain)
Definition: make_jetstreamTest.cxx:12
JetStreamer::next
std::vector< std::size_t > next()
Definition: JetStreamer.h:40
ReadCellNoiseFromCoolCompare.v2
v2
Definition: ReadCellNoiseFromCoolCompare.py:364
python.PyAthena.v
v
Definition: PyAthena.py:154
JetStreamer
Definition: JetStreamer.h:25
make_jetstream
std::unique_ptr< IJetStream > make_jetstream(std::vector< std::vector< std::size_t >> indices, std::vector< std::size_t > repeats, std::size_t sid)
Definition: make_jetstream.h:28