9 #include <mva/interface/Dataset.h>
10 #include <framework/utilities/TestHelpers.h>
12 #include <boost/filesystem/operations.hpp>
14 #include <gtest/gtest.h>
27 m_input = {1.0, 2.0, 3.0, 4.0, 5.0};
33 [[nodiscard]]
unsigned int getNumberOfFeatures()
const override {
return 5; }
34 [[nodiscard]]
unsigned int getNumberOfSpectators()
const override {
return 2; }
35 [[nodiscard]]
unsigned int getNumberOfEvents()
const override {
return 20; }
36 void loadEvent(
unsigned int iEvent)
override
38 auto f =
static_cast<float>(iEvent);
39 m_input = {f + 1, f + 2, f + 3, f + 4, f + 5};
40 m_spectators = {f + 6, f + 7};
42 float getSignalFraction()
override {
return 0.1; };
43 std::vector<float> getFeature(
unsigned int iFeature)
override
45 std::vector<float> a(20, 0.0);
46 std::iota(a.begin(), a.end(), iFeature + 1);
49 std::vector<float> getSpectator(
unsigned int iSpectator)
override
51 std::vector<float> a(20, 0.0);
52 std::iota(a.begin(), a.end(), iSpectator + 6);
58 TEST(DatasetTest, SingleDataset)
62 general_options.m_variables = {
"a",
"b",
"c"};
63 general_options.m_spectators = {
"e",
"f"};
64 general_options.m_signal_class = 2;
65 std::vector<float> input = {1.0, 2.0, 3.0};
66 std::vector<float> spectators = {4.0, 5.0};
70 EXPECT_EQ(x.getNumberOfFeatures(), 3);
71 EXPECT_EQ(x.getNumberOfSpectators(), 2);
72 EXPECT_EQ(x.getNumberOfEvents(), 1);
74 EXPECT_EQ(x.getFeatureIndex(
"a"), 0);
75 EXPECT_EQ(x.getFeatureIndex(
"b"), 1);
76 EXPECT_EQ(x.getFeatureIndex(
"c"), 2);
77 EXPECT_B2ERROR(x.getFeatureIndex(
"bla"));
79 EXPECT_EQ(x.getSpectatorIndex(
"e"), 0);
80 EXPECT_EQ(x.getSpectatorIndex(
"f"), 1);
81 EXPECT_B2ERROR(x.getSpectatorIndex(
"bla"));
86 EXPECT_EQ(x.m_input.size(), 3);
87 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
88 EXPECT_FLOAT_EQ(x.m_input[1], 2.0);
89 EXPECT_FLOAT_EQ(x.m_input[2], 3.0);
91 EXPECT_EQ(x.m_spectators.size(), 2);
92 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.0);
93 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.0);
95 EXPECT_FLOAT_EQ(x.m_weight, 1.0);
96 EXPECT_FLOAT_EQ(x.m_target, 2.0);
97 EXPECT_EQ(x.m_isSignal,
true);
99 EXPECT_FLOAT_EQ(x.getSignalFraction(), 1.0);
101 auto feature = x.getFeature(1);
102 EXPECT_EQ(feature.size(), 1);
103 EXPECT_FLOAT_EQ(feature[0], 2.0);
105 auto spectator = x.getSpectator(1);
106 EXPECT_EQ(spectator.size(), 1);
107 EXPECT_FLOAT_EQ(spectator[0], 5.0);
110 feature = x.Dataset::getFeature(1);
111 EXPECT_EQ(feature.size(), 1);
112 EXPECT_FLOAT_EQ(feature[0], 2.0);
116 TEST(DatasetTest, MultiDataset)
120 general_options.m_variables = {
"a",
"b",
"c"};
121 general_options.m_spectators = {
"e",
"f"};
122 general_options.m_signal_class = 2;
123 std::vector<std::vector<float>> matrix = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
124 std::vector<std::vector<float>> spectator_matrix = {{12.0, 13.0}, {15.0, 16.0}, {18.0, 19.0}};
125 std::vector<float> targets = {2.0, 0.0, 2.0};
126 std::vector<float> weights = {1.0, 2.0, 3.0};
128 EXPECT_B2ERROR(
MVA::MultiDataset(general_options, matrix, spectator_matrix, {1.0}, weights));
130 EXPECT_B2ERROR(
MVA::MultiDataset(general_options, matrix, spectator_matrix, targets, {1.0}));
132 MVA::MultiDataset x(general_options, matrix, spectator_matrix, targets, weights);
134 EXPECT_EQ(x.getNumberOfFeatures(), 3);
135 EXPECT_EQ(x.getNumberOfEvents(), 3);
140 EXPECT_EQ(x.m_input.size(), 3);
141 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
142 EXPECT_FLOAT_EQ(x.m_input[1], 2.0);
143 EXPECT_FLOAT_EQ(x.m_input[2], 3.0);
145 EXPECT_EQ(x.m_spectators.size(), 2);
146 EXPECT_FLOAT_EQ(x.m_spectators[0], 12.0);
147 EXPECT_FLOAT_EQ(x.m_spectators[1], 13.0);
149 EXPECT_FLOAT_EQ(x.m_weight, 1.0);
150 EXPECT_FLOAT_EQ(x.m_target, 2.0);
151 EXPECT_EQ(x.m_isSignal,
true);
156 EXPECT_EQ(x.m_input.size(), 3);
157 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
158 EXPECT_FLOAT_EQ(x.m_input[1], 5.0);
159 EXPECT_FLOAT_EQ(x.m_input[2], 6.0);
161 EXPECT_EQ(x.m_spectators.size(), 2);
162 EXPECT_FLOAT_EQ(x.m_spectators[0], 15.0);
163 EXPECT_FLOAT_EQ(x.m_spectators[1], 16.0);
165 EXPECT_FLOAT_EQ(x.m_weight, 2.0);
166 EXPECT_FLOAT_EQ(x.m_target, 0.0);
167 EXPECT_EQ(x.m_isSignal,
false);
172 EXPECT_EQ(x.m_input.size(), 3);
173 EXPECT_FLOAT_EQ(x.m_input[0], 7.0);
174 EXPECT_FLOAT_EQ(x.m_input[1], 8.0);
175 EXPECT_FLOAT_EQ(x.m_input[2], 9.0);
177 EXPECT_EQ(x.m_spectators.size(), 2);
178 EXPECT_FLOAT_EQ(x.m_spectators[0], 18.0);
179 EXPECT_FLOAT_EQ(x.m_spectators[1], 19.0);
181 EXPECT_FLOAT_EQ(x.m_weight, 3.0);
182 EXPECT_FLOAT_EQ(x.m_target, 2.0);
183 EXPECT_EQ(x.m_isSignal,
true);
185 EXPECT_FLOAT_EQ(x.getSignalFraction(), 4.0 / 6.0);
187 auto feature = x.getFeature(1);
188 EXPECT_EQ(feature.size(), 3);
189 EXPECT_FLOAT_EQ(feature[0], 2.0);
190 EXPECT_FLOAT_EQ(feature[1], 5.0);
191 EXPECT_FLOAT_EQ(feature[2], 8.0);
193 auto spectator = x.getSpectator(1);
194 EXPECT_EQ(spectator.size(), 3);
195 EXPECT_FLOAT_EQ(spectator[0], 13.0);
196 EXPECT_FLOAT_EQ(spectator[1], 16.0);
197 EXPECT_FLOAT_EQ(spectator[2], 19.0);
202 TEST(DatasetTest, SubDataset)
206 general_options.m_signal_class = 3;
207 general_options.m_variables = {
"a",
"b",
"c",
"d",
"e"};
208 general_options.m_spectators = {
"f",
"g"};
209 TestDataset test_dataset(general_options);
211 general_options.m_variables = {
"a",
"d",
"e"};
212 general_options.m_spectators = {
"g"};
213 std::vector<bool> events = {
true,
false,
true,
false,
true,
false,
true,
false,
true,
false,
214 true,
false,
true,
false,
true,
false,
true,
false,
true,
false
218 EXPECT_EQ(x.getNumberOfFeatures(), 3);
219 EXPECT_EQ(x.getNumberOfEvents(), 10);
224 EXPECT_EQ(x.m_input.size(), 3);
225 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
226 EXPECT_FLOAT_EQ(x.m_input[1], 4.0);
227 EXPECT_FLOAT_EQ(x.m_input[2], 5.0);
229 EXPECT_EQ(x.m_spectators.size(), 1);
230 EXPECT_FLOAT_EQ(x.m_spectators[0], 7.0);
232 EXPECT_FLOAT_EQ(x.m_weight, -3.0);
233 EXPECT_FLOAT_EQ(x.m_target, 3.0);
234 EXPECT_EQ(x.m_isSignal,
true);
236 EXPECT_FLOAT_EQ(x.getSignalFraction(), 1);
238 auto feature = x.getFeature(1);
239 EXPECT_EQ(feature.size(), 10);
240 for (
unsigned int iEvent = 0; iEvent < 10; ++iEvent) {
241 EXPECT_FLOAT_EQ(feature[iEvent], iEvent * 2 + 4);
244 auto spectator = x.getSpectator(0);
245 EXPECT_EQ(spectator.size(), 10);
246 for (
unsigned int iEvent = 0; iEvent < 10; ++iEvent) {
247 EXPECT_FLOAT_EQ(spectator[iEvent], iEvent * 2 + 7);
251 feature = x.Dataset::getFeature(1);
252 EXPECT_EQ(feature.size(), 10);
253 for (
unsigned int iEvent = 0; iEvent < 10; ++iEvent) {
254 EXPECT_FLOAT_EQ(feature[iEvent], iEvent * 2 + 4);
257 spectator = x.Dataset::getSpectator(0);
258 EXPECT_EQ(spectator.size(), 10);
259 for (
unsigned int iEvent = 0; iEvent < 10; ++iEvent) {
260 EXPECT_FLOAT_EQ(spectator[iEvent], iEvent * 2 + 7);
265 feature = y.getFeature(1);
266 EXPECT_EQ(feature.size(), 20);
267 for (
unsigned int iEvent = 0; iEvent < 20; ++iEvent) {
268 EXPECT_FLOAT_EQ(feature[iEvent], iEvent + 4);
271 spectator = y.getSpectator(0);
272 EXPECT_EQ(spectator.size(), 20);
273 for (
unsigned int iEvent = 0; iEvent < 20; ++iEvent) {
274 EXPECT_FLOAT_EQ(spectator[iEvent], iEvent + 7);
278 feature = y.Dataset::getFeature(1);
279 EXPECT_EQ(feature.size(), 20);
280 for (
unsigned int iEvent = 0; iEvent < 20; ++iEvent) {
281 EXPECT_FLOAT_EQ(feature[iEvent], iEvent + 4);
284 spectator = y.Dataset::getSpectator(0);
285 EXPECT_EQ(spectator.size(), 20);
286 for (
unsigned int iEvent = 0; iEvent < 20; ++iEvent) {
287 EXPECT_FLOAT_EQ(spectator[iEvent], iEvent + 7);
290 general_options.m_variables = {
"a",
"d",
"e",
"DOESNOTEXIST"};
292 EXPECT_B2ERROR(
MVA::SubDataset(general_options, events, test_dataset));
296 EXPECT_THROW(
MVA::SubDataset(general_options, events, test_dataset), std::runtime_error);
298 general_options.m_variables = {
"a",
"d",
"e"};
299 general_options.m_spectators = {
"DOESNOTEXIST"};
301 EXPECT_B2ERROR(
MVA::SubDataset(general_options, events, test_dataset));
305 EXPECT_THROW(
MVA::SubDataset(general_options, events, test_dataset), std::runtime_error);
309 TEST(DatasetTest, CombinedDataset)
313 general_options.m_signal_class = 1;
314 general_options.m_variables = {
"a",
"b",
"c",
"d",
"e"};
315 general_options.m_spectators = {
"f",
"g"};
316 TestDataset signal_dataset(general_options);
317 TestDataset bckgrd_dataset(general_options);
321 EXPECT_EQ(x.getNumberOfFeatures(), 5);
322 EXPECT_EQ(x.getNumberOfEvents(), 40);
327 EXPECT_EQ(x.m_input.size(), 5);
328 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
329 EXPECT_FLOAT_EQ(x.m_input[1], 2.0);
330 EXPECT_FLOAT_EQ(x.m_input[2], 3.0);
331 EXPECT_FLOAT_EQ(x.m_input[3], 4.0);
332 EXPECT_FLOAT_EQ(x.m_input[4], 5.0);
334 EXPECT_EQ(x.m_spectators.size(), 2);
335 EXPECT_FLOAT_EQ(x.m_spectators[0], 6.0);
336 EXPECT_FLOAT_EQ(x.m_spectators[1], 7.0);
338 EXPECT_FLOAT_EQ(x.m_weight, -3.0);
339 EXPECT_FLOAT_EQ(x.m_target, 1.0);
340 EXPECT_EQ(x.m_isSignal,
true);
342 EXPECT_FLOAT_EQ(x.getSignalFraction(), 0.5);
344 auto feature = x.getFeature(1);
345 EXPECT_EQ(feature.size(), 40);
346 for (
unsigned int iEvent = 0; iEvent < 40; ++iEvent) {
347 EXPECT_FLOAT_EQ(feature[iEvent], (iEvent % 20) + 2);
350 auto spectator = x.getSpectator(0);
351 EXPECT_EQ(spectator.size(), 40);
352 for (
unsigned int iEvent = 0; iEvent < 40; ++iEvent) {
353 EXPECT_FLOAT_EQ(spectator[iEvent], (iEvent % 20) + 6);
357 feature = x.Dataset::getFeature(1);
358 EXPECT_EQ(feature.size(), 40);
359 for (
unsigned int iEvent = 0; iEvent < 40; ++iEvent) {
360 EXPECT_FLOAT_EQ(feature[iEvent], (iEvent % 20) + 2);
363 spectator = x.Dataset::getSpectator(0);
364 EXPECT_EQ(spectator.size(), 40);
365 for (
unsigned int iEvent = 0; iEvent < 40; ++iEvent) {
366 EXPECT_FLOAT_EQ(spectator[iEvent], (iEvent % 20) + 6);
369 for (
unsigned int iEvent = 0; iEvent < 40; ++iEvent) {
371 EXPECT_EQ(x.m_isSignal, iEvent < 20);
372 EXPECT_FLOAT_EQ(x.m_target, iEvent < 20 ? 1.0 : 0.0);
377 TEST(DatasetTest, ROOTDataset)
381 TFile file(
"datafile.root",
"RECREATE");
383 TTree tree(
"tree",
"TreeTitle");
384 float a, b, c, d, e, f, g, v, w = 0;
385 tree.Branch(
"a", &a);
386 tree.Branch(
"b", &b);
387 tree.Branch(
"c", &c);
388 tree.Branch(
"d", &d);
389 tree.Branch(
"e__bo__bc", &e);
390 tree.Branch(
"f__bo__bc", &f);
391 tree.Branch(
"g", &g);
392 tree.Branch(
"__weight__", &c);
393 tree.Branch(
"v__bo__bc", &v);
394 tree.Branch(
"w", &w);
396 for (
unsigned int i = 0; i < 5; ++i) {
403 g = float(i % 2 == 0);
413 general_options.m_variables = {
"a",
"b",
"e__bo__bc",
"f()"};
414 general_options.m_spectators = {
"w",
"v()"};
415 general_options.m_signal_class = 1;
416 general_options.m_datafiles = {
"datafile.root"};
417 general_options.m_treename =
"tree";
418 general_options.m_target_variable =
"g";
419 general_options.m_weight_variable =
"c";
422 EXPECT_EQ(x.getNumberOfFeatures(), 4);
423 EXPECT_EQ(x.getNumberOfSpectators(), 2);
424 EXPECT_EQ(x.getNumberOfEvents(), 5);
428 EXPECT_EQ(x.m_input.size(), 4);
429 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
430 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
431 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
432 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
433 EXPECT_EQ(x.m_spectators.size(), 2);
434 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
435 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
436 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
437 EXPECT_FLOAT_EQ(x.m_target, 1.0);
438 EXPECT_EQ(x.m_isSignal,
true);
441 EXPECT_EQ(x.m_input.size(), 4);
442 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
443 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
444 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
445 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
446 EXPECT_EQ(x.m_spectators.size(), 2);
447 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
448 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
449 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
450 EXPECT_FLOAT_EQ(x.m_target, 0.0);
451 EXPECT_EQ(x.m_isSignal,
false);
454 EXPECT_EQ(x.m_input.size(), 4);
455 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
456 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
457 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
458 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
459 EXPECT_EQ(x.m_spectators.size(), 2);
460 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
461 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
462 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
463 EXPECT_FLOAT_EQ(x.m_target, 1.0);
464 EXPECT_EQ(x.m_isSignal,
true);
467 EXPECT_EQ(x.m_input.size(), 4);
468 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
469 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
470 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
471 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
472 EXPECT_EQ(x.m_spectators.size(), 2);
473 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
474 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
475 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
476 EXPECT_FLOAT_EQ(x.m_target, 0.0);
477 EXPECT_EQ(x.m_isSignal,
false);
480 EXPECT_EQ(x.m_input.size(), 4);
481 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
482 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
483 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
484 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
485 EXPECT_EQ(x.m_spectators.size(), 2);
486 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
487 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
488 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
489 EXPECT_FLOAT_EQ(x.m_target, 1.0);
490 EXPECT_EQ(x.m_isSignal,
true);
492 EXPECT_FLOAT_EQ(x.getSignalFraction(), 0.6);
494 auto feature = x.getFeature(1);
495 EXPECT_EQ(feature.size(), 5);
496 EXPECT_FLOAT_EQ(feature[0], 1.1);
497 EXPECT_FLOAT_EQ(feature[1], 2.1);
498 EXPECT_FLOAT_EQ(feature[2], 3.1);
499 EXPECT_FLOAT_EQ(feature[3], 4.1);
500 EXPECT_FLOAT_EQ(feature[4], 5.1);
503 feature = x.Dataset::getFeature(1);
504 EXPECT_EQ(feature.size(), 5);
505 EXPECT_FLOAT_EQ(feature[0], 1.1);
506 EXPECT_FLOAT_EQ(feature[1], 2.1);
507 EXPECT_FLOAT_EQ(feature[2], 3.1);
508 EXPECT_FLOAT_EQ(feature[3], 4.1);
509 EXPECT_FLOAT_EQ(feature[4], 5.1);
511 auto spectator = x.getSpectator(1);
512 EXPECT_EQ(spectator.size(), 5);
513 EXPECT_FLOAT_EQ(spectator[0], 1.7);
514 EXPECT_FLOAT_EQ(spectator[1], 2.7);
515 EXPECT_FLOAT_EQ(spectator[2], 3.7);
516 EXPECT_FLOAT_EQ(spectator[3], 4.7);
517 EXPECT_FLOAT_EQ(spectator[4], 5.7);
520 spectator = x.Dataset::getSpectator(1);
521 EXPECT_EQ(spectator.size(), 5);
522 EXPECT_FLOAT_EQ(spectator[0], 1.7);
523 EXPECT_FLOAT_EQ(spectator[1], 2.7);
524 EXPECT_FLOAT_EQ(spectator[2], 3.7);
525 EXPECT_FLOAT_EQ(spectator[3], 4.7);
526 EXPECT_FLOAT_EQ(spectator[4], 5.7);
528 auto weights = x.getWeights();
529 EXPECT_EQ(weights.size(), 5);
530 EXPECT_FLOAT_EQ(weights[0], 1.2);
531 EXPECT_FLOAT_EQ(weights[1], 2.2);
532 EXPECT_FLOAT_EQ(weights[2], 3.2);
533 EXPECT_FLOAT_EQ(weights[3], 4.2);
534 EXPECT_FLOAT_EQ(weights[4], 5.2);
537 weights = x.Dataset::getWeights();
538 EXPECT_EQ(weights.size(), 5);
539 EXPECT_FLOAT_EQ(weights[0], 1.2);
540 EXPECT_FLOAT_EQ(weights[1], 2.2);
541 EXPECT_FLOAT_EQ(weights[2], 3.2);
542 EXPECT_FLOAT_EQ(weights[3], 4.2);
543 EXPECT_FLOAT_EQ(weights[4], 5.2);
545 auto targets = x.getTargets();
546 EXPECT_EQ(targets.size(), 5);
547 EXPECT_FLOAT_EQ(targets[0], 1.0);
548 EXPECT_FLOAT_EQ(targets[1], 0.0);
549 EXPECT_FLOAT_EQ(targets[2], 1.0);
550 EXPECT_FLOAT_EQ(targets[3], 0.0);
551 EXPECT_FLOAT_EQ(targets[4], 1.0);
553 auto signals = x.getSignals();
554 EXPECT_EQ(signals.size(), 5);
555 EXPECT_EQ(signals[0],
true);
556 EXPECT_EQ(signals[1],
false);
557 EXPECT_EQ(signals[2],
true);
558 EXPECT_EQ(signals[3],
false);
559 EXPECT_EQ(signals[4],
true);
565 general_options.m_weight_variable =
"__weight__";
568 weights = y.getWeights();
569 EXPECT_EQ(weights.size(), 5);
570 EXPECT_FLOAT_EQ(weights[0], 1.2);
571 EXPECT_FLOAT_EQ(weights[1], 2.2);
572 EXPECT_FLOAT_EQ(weights[2], 3.2);
573 EXPECT_FLOAT_EQ(weights[3], 4.2);
574 EXPECT_FLOAT_EQ(weights[4], 5.2);
577 general_options.m_datafiles = {
"datafile*.root"};
580 EXPECT_EQ(chain_test.getNumberOfEvents(), 5);
582 boost::filesystem::copy_file(
"datafile.root",
"datafile2.root");
585 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
587 boost::filesystem::copy_file(
"datafile.root",
"datafile3.root");
590 EXPECT_EQ(chain_test.getNumberOfEvents(), 15);
594 general_options.m_max_events = 10;
596 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
597 general_options.m_max_events = 0;
601 general_options.m_treename =
"missing tree";
610 general_options.m_treename =
"tree";
611 general_options.m_variables = {
"a",
"b",
"e",
"f",
"missing branch"};
620 general_options.m_treename =
"tree";
621 general_options.m_variables = {
"a",
"b",
"e",
"f"};
622 general_options.m_spectators = {
"missing branch"};
631 general_options.m_spectators = {};
632 general_options.m_datafiles = {
"DOESNOTEXIST.root"};
633 general_options.m_treename =
"tree";
642 general_options.m_datafiles = {
"ISNotAValidROOTFile"};
643 general_options.m_treename =
"tree";
646 std::ofstream(general_options.m_datafiles[0]);
648 EXPECT_TRUE(boost::filesystem::exists(general_options.m_datafiles[0]));
659 TEST(DatasetTest, ROOTDatasetDouble)
663 TFile file(
"datafile.root",
"RECREATE");
665 TTree tree(
"tree",
"TreeTitle");
666 double a, b, c, d, e, f, g, v, w = 0;
667 tree.Branch(
"a", &a,
"a/D");
668 tree.Branch(
"b", &b,
"b/D");
669 tree.Branch(
"c", &c,
"c/D");
670 tree.Branch(
"d", &d,
"d/D");
671 tree.Branch(
"e__bo__bc", &e,
"e__bo__bc/D");
672 tree.Branch(
"f__bo__bc", &f,
"f__bo__bc/D");
673 tree.Branch(
"g", &g,
"g/D");
674 tree.Branch(
"__weight__", &c,
"__weight__/D");
675 tree.Branch(
"v__bo__bc", &v,
"v__bo__bc/D");
676 tree.Branch(
"w", &w,
"w/D");
678 for (
unsigned int i = 0; i < 5; ++i) {
685 g = float(i % 2 == 0);
695 general_options.m_variables = {
"a",
"b",
"e__bo__bc",
"f()"};
696 general_options.m_spectators = {
"w",
"v()"};
697 general_options.m_signal_class = 1;
698 general_options.m_datafiles = {
"datafile.root"};
699 general_options.m_treename =
"tree";
700 general_options.m_target_variable =
"g";
701 general_options.m_weight_variable =
"c";
704 EXPECT_EQ(x.getNumberOfFeatures(), 4);
705 EXPECT_EQ(x.getNumberOfSpectators(), 2);
706 EXPECT_EQ(x.getNumberOfEvents(), 5);
710 EXPECT_EQ(x.m_input.size(), 4);
711 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
712 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
713 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
714 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
715 EXPECT_EQ(x.m_spectators.size(), 2);
716 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
717 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
718 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
719 EXPECT_FLOAT_EQ(x.m_target, 1.0);
720 EXPECT_EQ(x.m_isSignal,
true);
723 EXPECT_EQ(x.m_input.size(), 4);
724 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
725 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
726 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
727 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
728 EXPECT_EQ(x.m_spectators.size(), 2);
729 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
730 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
731 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
732 EXPECT_FLOAT_EQ(x.m_target, 0.0);
733 EXPECT_EQ(x.m_isSignal,
false);
736 EXPECT_EQ(x.m_input.size(), 4);
737 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
738 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
739 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
740 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
741 EXPECT_EQ(x.m_spectators.size(), 2);
742 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
743 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
744 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
745 EXPECT_FLOAT_EQ(x.m_target, 1.0);
746 EXPECT_EQ(x.m_isSignal,
true);
749 EXPECT_EQ(x.m_input.size(), 4);
750 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
751 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
752 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
753 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
754 EXPECT_EQ(x.m_spectators.size(), 2);
755 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
756 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
757 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
758 EXPECT_FLOAT_EQ(x.m_target, 0.0);
759 EXPECT_EQ(x.m_isSignal,
false);
762 EXPECT_EQ(x.m_input.size(), 4);
763 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
764 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
765 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
766 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
767 EXPECT_EQ(x.m_spectators.size(), 2);
768 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
769 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
770 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
771 EXPECT_FLOAT_EQ(x.m_target, 1.0);
772 EXPECT_EQ(x.m_isSignal,
true);
774 EXPECT_FLOAT_EQ(x.getSignalFraction(), 0.6);
776 auto feature = x.getFeature(1);
777 EXPECT_EQ(feature.size(), 5);
778 EXPECT_FLOAT_EQ(feature[0], 1.1);
779 EXPECT_FLOAT_EQ(feature[1], 2.1);
780 EXPECT_FLOAT_EQ(feature[2], 3.1);
781 EXPECT_FLOAT_EQ(feature[3], 4.1);
782 EXPECT_FLOAT_EQ(feature[4], 5.1);
785 feature = x.Dataset::getFeature(1);
786 EXPECT_EQ(feature.size(), 5);
787 EXPECT_FLOAT_EQ(feature[0], 1.1);
788 EXPECT_FLOAT_EQ(feature[1], 2.1);
789 EXPECT_FLOAT_EQ(feature[2], 3.1);
790 EXPECT_FLOAT_EQ(feature[3], 4.1);
791 EXPECT_FLOAT_EQ(feature[4], 5.1);
793 auto spectator = x.getSpectator(1);
794 EXPECT_EQ(spectator.size(), 5);
795 EXPECT_FLOAT_EQ(spectator[0], 1.7);
796 EXPECT_FLOAT_EQ(spectator[1], 2.7);
797 EXPECT_FLOAT_EQ(spectator[2], 3.7);
798 EXPECT_FLOAT_EQ(spectator[3], 4.7);
799 EXPECT_FLOAT_EQ(spectator[4], 5.7);
802 spectator = x.Dataset::getSpectator(1);
803 EXPECT_EQ(spectator.size(), 5);
804 EXPECT_FLOAT_EQ(spectator[0], 1.7);
805 EXPECT_FLOAT_EQ(spectator[1], 2.7);
806 EXPECT_FLOAT_EQ(spectator[2], 3.7);
807 EXPECT_FLOAT_EQ(spectator[3], 4.7);
808 EXPECT_FLOAT_EQ(spectator[4], 5.7);
810 auto weights = x.getWeights();
811 EXPECT_EQ(weights.size(), 5);
812 EXPECT_FLOAT_EQ(weights[0], 1.2);
813 EXPECT_FLOAT_EQ(weights[1], 2.2);
814 EXPECT_FLOAT_EQ(weights[2], 3.2);
815 EXPECT_FLOAT_EQ(weights[3], 4.2);
816 EXPECT_FLOAT_EQ(weights[4], 5.2);
819 weights = x.Dataset::getWeights();
820 EXPECT_EQ(weights.size(), 5);
821 EXPECT_FLOAT_EQ(weights[0], 1.2);
822 EXPECT_FLOAT_EQ(weights[1], 2.2);
823 EXPECT_FLOAT_EQ(weights[2], 3.2);
824 EXPECT_FLOAT_EQ(weights[3], 4.2);
825 EXPECT_FLOAT_EQ(weights[4], 5.2);
827 auto targets = x.getTargets();
828 EXPECT_EQ(targets.size(), 5);
829 EXPECT_FLOAT_EQ(targets[0], 1.0);
830 EXPECT_FLOAT_EQ(targets[1], 0.0);
831 EXPECT_FLOAT_EQ(targets[2], 1.0);
832 EXPECT_FLOAT_EQ(targets[3], 0.0);
833 EXPECT_FLOAT_EQ(targets[4], 1.0);
835 auto signals = x.getSignals();
836 EXPECT_EQ(signals.size(), 5);
837 EXPECT_EQ(signals[0],
true);
838 EXPECT_EQ(signals[1],
false);
839 EXPECT_EQ(signals[2],
true);
840 EXPECT_EQ(signals[3],
false);
841 EXPECT_EQ(signals[4],
true);
847 general_options.m_weight_variable =
"__weight__";
850 weights = y.getWeights();
851 EXPECT_EQ(weights.size(), 5);
852 EXPECT_FLOAT_EQ(weights[0], 1.2);
853 EXPECT_FLOAT_EQ(weights[1], 2.2);
854 EXPECT_FLOAT_EQ(weights[2], 3.2);
855 EXPECT_FLOAT_EQ(weights[3], 4.2);
856 EXPECT_FLOAT_EQ(weights[4], 5.2);
859 general_options.m_datafiles = {
"datafile*.root"};
862 EXPECT_EQ(chain_test.getNumberOfEvents(), 5);
864 boost::filesystem::copy_file(
"datafile.root",
"datafile2.root");
867 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
869 boost::filesystem::copy_file(
"datafile.root",
"datafile3.root");
872 EXPECT_EQ(chain_test.getNumberOfEvents(), 15);
876 general_options.m_max_events = 10;
878 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
879 general_options.m_max_events = 0;
883 general_options.m_treename =
"missing tree";
892 general_options.m_treename =
"tree";
893 general_options.m_variables = {
"a",
"b",
"e",
"f",
"missing branch"};
902 general_options.m_treename =
"tree";
903 general_options.m_variables = {
"a",
"b",
"e",
"f"};
904 general_options.m_spectators = {
"missing branch"};
913 general_options.m_spectators = {};
914 general_options.m_datafiles = {
"DOESNOTEXIST.root"};
915 general_options.m_treename =
"tree";
924 general_options.m_datafiles = {
"ISNotAValidROOTFile"};
925 general_options.m_treename =
"tree";
928 std::ofstream(general_options.m_datafiles[0]);
930 EXPECT_TRUE(boost::filesystem::exists(general_options.m_datafiles[0]));
940 TEST(DatasetTest, ROOTMultiDataset)
944 TFile file(
"datafile.root",
"RECREATE");
946 TTree tree(
"tree",
"TreeTitle");
947 float a, b, c, d, e, f, g, v, w = 0;
948 tree.Branch(
"a", &a);
949 tree.Branch(
"b", &b);
950 tree.Branch(
"c", &c);
951 tree.Branch(
"d", &d);
952 tree.Branch(
"e__bo__bc", &e);
953 tree.Branch(
"f__bo__bc", &f);
954 tree.Branch(
"g", &g);
955 tree.Branch(
"__weight__", &c);
956 tree.Branch(
"v__bo__bc", &v);
957 tree.Branch(
"w", &w);
959 for (
unsigned int i = 0; i < 5; ++i) {
966 g = float(i % 2 == 0);
974 TFile file2(
"datafile2.root",
"RECREATE");
976 TTree tree2(
"tree",
"TreeTitle");
977 tree2.Branch(
"a", &a);
978 tree2.Branch(
"b", &b);
979 tree2.Branch(
"c", &c);
980 tree2.Branch(
"d", &d);
981 tree2.Branch(
"e__bo__bc", &e);
982 tree2.Branch(
"f__bo__bc", &f);
983 tree2.Branch(
"g", &g);
984 tree2.Branch(
"__weight__", &c);
985 tree2.Branch(
"v__bo__bc", &v);
986 tree2.Branch(
"w", &w);
988 for (
unsigned int i = 0; i < 5; ++i) {
995 g = float(i % 2 == 0);
1001 file2.Write(
"tree");
1005 general_options.m_variables = {
"a",
"b",
"e__bo__bc",
"f()"};
1006 general_options.m_spectators = {
"w",
"v()"};
1007 general_options.m_signal_class = 1;
1008 general_options.m_datafiles = {
"datafile.root",
"datafile2.root"};
1009 general_options.m_treename =
"tree";
1010 general_options.m_target_variable =
"g";
1011 general_options.m_weight_variable =
"c";
1014 EXPECT_EQ(x.getNumberOfFeatures(), 4);
1015 EXPECT_EQ(x.getNumberOfSpectators(), 2);
1016 EXPECT_EQ(x.getNumberOfEvents(), 10);
1020 EXPECT_EQ(x.m_input.size(), 4);
1021 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
1022 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
1023 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
1024 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
1025 EXPECT_EQ(x.m_spectators.size(), 2);
1026 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
1027 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
1028 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
1029 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1030 EXPECT_EQ(x.m_isSignal,
true);
1033 EXPECT_EQ(x.m_input.size(), 4);
1034 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
1035 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
1036 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
1037 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
1038 EXPECT_EQ(x.m_spectators.size(), 2);
1039 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
1040 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
1041 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
1042 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1043 EXPECT_EQ(x.m_isSignal,
true);
1046 EXPECT_EQ(x.m_input.size(), 4);
1047 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
1048 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
1049 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
1050 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
1051 EXPECT_EQ(x.m_spectators.size(), 2);
1052 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
1053 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
1054 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
1055 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1056 EXPECT_EQ(x.m_isSignal,
false);
1059 EXPECT_EQ(x.m_input.size(), 4);
1060 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
1061 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
1062 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
1063 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
1064 EXPECT_EQ(x.m_spectators.size(), 2);
1065 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
1066 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
1067 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
1068 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1069 EXPECT_EQ(x.m_isSignal,
false);
1072 EXPECT_EQ(x.m_input.size(), 4);
1073 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
1074 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
1075 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
1076 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
1077 EXPECT_EQ(x.m_spectators.size(), 2);
1078 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
1079 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
1080 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
1081 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1082 EXPECT_EQ(x.m_isSignal,
true);
1085 EXPECT_EQ(x.m_input.size(), 4);
1086 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
1087 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
1088 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
1089 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
1090 EXPECT_EQ(x.m_spectators.size(), 2);
1091 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
1092 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
1093 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
1094 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1095 EXPECT_EQ(x.m_isSignal,
true);
1098 EXPECT_EQ(x.m_input.size(), 4);
1099 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
1100 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
1101 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
1102 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
1103 EXPECT_EQ(x.m_spectators.size(), 2);
1104 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
1105 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
1106 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
1107 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1108 EXPECT_EQ(x.m_isSignal,
false);
1111 EXPECT_EQ(x.m_input.size(), 4);
1112 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
1113 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
1114 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
1115 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
1116 EXPECT_EQ(x.m_spectators.size(), 2);
1117 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
1118 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
1119 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
1120 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1121 EXPECT_EQ(x.m_isSignal,
false);
1124 EXPECT_EQ(x.m_input.size(), 4);
1125 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
1126 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
1127 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
1128 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
1129 EXPECT_EQ(x.m_spectators.size(), 2);
1130 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
1131 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
1132 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
1133 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1134 EXPECT_EQ(x.m_isSignal,
true);
1137 EXPECT_EQ(x.m_input.size(), 4);
1138 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
1139 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
1140 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
1141 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
1142 EXPECT_EQ(x.m_spectators.size(), 2);
1143 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
1144 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
1145 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
1146 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1147 EXPECT_EQ(x.m_isSignal,
true);
1149 EXPECT_FLOAT_EQ(x.getSignalFraction(), 0.6);
1151 auto feature = x.getFeature(1);
1152 EXPECT_EQ(feature.size(), 10);
1153 EXPECT_FLOAT_EQ(feature[0], 1.1);
1154 EXPECT_FLOAT_EQ(feature[1], 2.1);
1155 EXPECT_FLOAT_EQ(feature[2], 3.1);
1156 EXPECT_FLOAT_EQ(feature[3], 4.1);
1157 EXPECT_FLOAT_EQ(feature[4], 5.1);
1158 EXPECT_FLOAT_EQ(feature[5], 1.1);
1159 EXPECT_FLOAT_EQ(feature[6], 2.1);
1160 EXPECT_FLOAT_EQ(feature[7], 3.1);
1161 EXPECT_FLOAT_EQ(feature[8], 4.1);
1162 EXPECT_FLOAT_EQ(feature[9], 5.1);
1165 feature = x.Dataset::getFeature(1);
1166 EXPECT_EQ(feature.size(), 10);
1167 EXPECT_FLOAT_EQ(feature[0], 1.1);
1168 EXPECT_FLOAT_EQ(feature[1], 2.1);
1169 EXPECT_FLOAT_EQ(feature[2], 3.1);
1170 EXPECT_FLOAT_EQ(feature[3], 4.1);
1171 EXPECT_FLOAT_EQ(feature[4], 5.1);
1172 EXPECT_FLOAT_EQ(feature[5], 1.1);
1173 EXPECT_FLOAT_EQ(feature[6], 2.1);
1174 EXPECT_FLOAT_EQ(feature[7], 3.1);
1175 EXPECT_FLOAT_EQ(feature[8], 4.1);
1176 EXPECT_FLOAT_EQ(feature[9], 5.1);
1178 auto spectator = x.getSpectator(1);
1179 EXPECT_EQ(spectator.size(), 10);
1180 EXPECT_FLOAT_EQ(spectator[0], 1.7);
1181 EXPECT_FLOAT_EQ(spectator[1], 2.7);
1182 EXPECT_FLOAT_EQ(spectator[2], 3.7);
1183 EXPECT_FLOAT_EQ(spectator[3], 4.7);
1184 EXPECT_FLOAT_EQ(spectator[4], 5.7);
1185 EXPECT_FLOAT_EQ(spectator[5], 1.7);
1186 EXPECT_FLOAT_EQ(spectator[6], 2.7);
1187 EXPECT_FLOAT_EQ(spectator[7], 3.7);
1188 EXPECT_FLOAT_EQ(spectator[8], 4.7);
1189 EXPECT_FLOAT_EQ(spectator[9], 5.7);
1192 spectator = x.Dataset::getSpectator(1);
1193 EXPECT_EQ(spectator.size(), 10);
1194 EXPECT_FLOAT_EQ(spectator[0], 1.7);
1195 EXPECT_FLOAT_EQ(spectator[1], 2.7);
1196 EXPECT_FLOAT_EQ(spectator[2], 3.7);
1197 EXPECT_FLOAT_EQ(spectator[3], 4.7);
1198 EXPECT_FLOAT_EQ(spectator[4], 5.7);
1199 EXPECT_FLOAT_EQ(spectator[5], 1.7);
1200 EXPECT_FLOAT_EQ(spectator[6], 2.7);
1201 EXPECT_FLOAT_EQ(spectator[7], 3.7);
1202 EXPECT_FLOAT_EQ(spectator[8], 4.7);
1203 EXPECT_FLOAT_EQ(spectator[9], 5.7);
1205 auto weights = x.getWeights();
1206 EXPECT_EQ(weights.size(), 10);
1207 EXPECT_FLOAT_EQ(weights[0], 1.2);
1208 EXPECT_FLOAT_EQ(weights[1], 2.2);
1209 EXPECT_FLOAT_EQ(weights[2], 3.2);
1210 EXPECT_FLOAT_EQ(weights[3], 4.2);
1211 EXPECT_FLOAT_EQ(weights[4], 5.2);
1212 EXPECT_FLOAT_EQ(weights[5], 1.2);
1213 EXPECT_FLOAT_EQ(weights[6], 2.2);
1214 EXPECT_FLOAT_EQ(weights[7], 3.2);
1215 EXPECT_FLOAT_EQ(weights[8], 4.2);
1216 EXPECT_FLOAT_EQ(weights[9], 5.2);
1219 weights = x.Dataset::getWeights();
1220 EXPECT_EQ(weights.size(), 10);
1221 EXPECT_FLOAT_EQ(weights[0], 1.2);
1222 EXPECT_FLOAT_EQ(weights[1], 2.2);
1223 EXPECT_FLOAT_EQ(weights[2], 3.2);
1224 EXPECT_FLOAT_EQ(weights[3], 4.2);
1225 EXPECT_FLOAT_EQ(weights[4], 5.2);
1226 EXPECT_FLOAT_EQ(weights[5], 1.2);
1227 EXPECT_FLOAT_EQ(weights[6], 2.2);
1228 EXPECT_FLOAT_EQ(weights[7], 3.2);
1229 EXPECT_FLOAT_EQ(weights[8], 4.2);
1230 EXPECT_FLOAT_EQ(weights[9], 5.2);
1232 auto targets = x.getTargets();
1233 EXPECT_EQ(targets.size(), 10);
1234 EXPECT_FLOAT_EQ(targets[0], 1.0);
1235 EXPECT_FLOAT_EQ(targets[1], 0.0);
1236 EXPECT_FLOAT_EQ(targets[2], 1.0);
1237 EXPECT_FLOAT_EQ(targets[3], 0.0);
1238 EXPECT_FLOAT_EQ(targets[4], 1.0);
1239 EXPECT_FLOAT_EQ(targets[5], 1.0);
1240 EXPECT_FLOAT_EQ(targets[6], 0.0);
1241 EXPECT_FLOAT_EQ(targets[7], 1.0);
1242 EXPECT_FLOAT_EQ(targets[8], 0.0);
1243 EXPECT_FLOAT_EQ(targets[9], 1.0);
1245 auto signals = x.getSignals();
1246 EXPECT_EQ(signals.size(), 10);
1247 EXPECT_EQ(signals[0],
true);
1248 EXPECT_EQ(signals[1],
false);
1249 EXPECT_EQ(signals[2],
true);
1250 EXPECT_EQ(signals[3],
false);
1251 EXPECT_EQ(signals[4],
true);
1252 EXPECT_EQ(signals[5],
true);
1253 EXPECT_EQ(signals[6],
false);
1254 EXPECT_EQ(signals[7],
true);
1255 EXPECT_EQ(signals[8],
false);
1256 EXPECT_EQ(signals[9],
true);
1262 general_options.m_weight_variable =
"__weight__";
1265 weights = y.getWeights();
1266 EXPECT_EQ(weights.size(), 10);
1267 EXPECT_FLOAT_EQ(weights[0], 1.2);
1268 EXPECT_FLOAT_EQ(weights[1], 2.2);
1269 EXPECT_FLOAT_EQ(weights[2], 3.2);
1270 EXPECT_FLOAT_EQ(weights[3], 4.2);
1271 EXPECT_FLOAT_EQ(weights[4], 5.2);
1272 EXPECT_FLOAT_EQ(weights[5], 1.2);
1273 EXPECT_FLOAT_EQ(weights[6], 2.2);
1274 EXPECT_FLOAT_EQ(weights[7], 3.2);
1275 EXPECT_FLOAT_EQ(weights[8], 4.2);
1276 EXPECT_FLOAT_EQ(weights[9], 5.2);
1279 general_options.m_datafiles = {
"datafile*.root"};
1282 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
1284 boost::filesystem::copy_file(
"datafile.root",
"datafile3.root");
1287 EXPECT_EQ(chain_test.getNumberOfEvents(), 15);
1289 boost::filesystem::copy_file(
"datafile.root",
"datafile4.root");
1292 EXPECT_EQ(chain_test.getNumberOfEvents(), 20);
1296 general_options.m_max_events = 10;
1298 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
1299 general_options.m_max_events = 0;
1304 boost::filesystem::copy_file(
"datafile.root",
"datafile*.root");
1306 general_options.m_max_events = 0;
1308 EXPECT_EQ(chain_test.getNumberOfEvents(), 5);
1312 TEST(DatasetTest, ROOTMultiDatasetDouble)
1316 TFile file(
"datafile.root",
"RECREATE");
1318 TTree tree(
"tree",
"TreeTitle");
1319 double a, b, c, d, e, f, g, v, w = 0;
1320 tree.Branch(
"a", &a,
"a/D");
1321 tree.Branch(
"b", &b,
"b/D");
1322 tree.Branch(
"c", &c,
"c/D");
1323 tree.Branch(
"d", &d,
"d/D");
1324 tree.Branch(
"e__bo__bc", &e,
"e__bo__bc/D");
1325 tree.Branch(
"f__bo__bc", &f,
"f__bo__bc/D");
1326 tree.Branch(
"g", &g,
"g/D");
1327 tree.Branch(
"__weight__", &c,
"__weight__/D");
1328 tree.Branch(
"v__bo__bc", &v,
"v__bo__bc/D");
1329 tree.Branch(
"w", &w,
"w/D");
1331 for (
unsigned int i = 0; i < 5; ++i) {
1338 g = float(i % 2 == 0);
1346 TFile file2(
"datafile2.root",
"RECREATE");
1348 TTree tree2(
"tree",
"TreeTitle");
1349 tree2.Branch(
"a", &a);
1350 tree2.Branch(
"b", &b);
1351 tree2.Branch(
"c", &c);
1352 tree2.Branch(
"d", &d);
1353 tree2.Branch(
"e__bo__bc", &e);
1354 tree2.Branch(
"f__bo__bc", &f);
1355 tree2.Branch(
"g", &g);
1356 tree2.Branch(
"__weight__", &c);
1357 tree2.Branch(
"v__bo__bc", &v);
1358 tree2.Branch(
"w", &w);
1360 for (
unsigned int i = 0; i < 5; ++i) {
1367 g = float(i % 2 == 0);
1373 file2.Write(
"tree");
1377 general_options.m_variables = {
"a",
"b",
"e__bo__bc",
"f()"};
1378 general_options.m_spectators = {
"w",
"v()"};
1379 general_options.m_signal_class = 1;
1380 general_options.m_datafiles = {
"datafile.root",
"datafile2.root"};
1381 general_options.m_treename =
"tree";
1382 general_options.m_target_variable =
"g";
1383 general_options.m_weight_variable =
"c";
1386 EXPECT_EQ(x.getNumberOfFeatures(), 4);
1387 EXPECT_EQ(x.getNumberOfSpectators(), 2);
1388 EXPECT_EQ(x.getNumberOfEvents(), 10);
1392 EXPECT_EQ(x.m_input.size(), 4);
1393 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
1394 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
1395 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
1396 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
1397 EXPECT_EQ(x.m_spectators.size(), 2);
1398 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
1399 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
1400 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
1401 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1402 EXPECT_EQ(x.m_isSignal,
true);
1405 EXPECT_EQ(x.m_input.size(), 4);
1406 EXPECT_FLOAT_EQ(x.m_input[0], 1.0);
1407 EXPECT_FLOAT_EQ(x.m_input[1], 1.1);
1408 EXPECT_FLOAT_EQ(x.m_input[2], 1.4);
1409 EXPECT_FLOAT_EQ(x.m_input[3], 1.5);
1410 EXPECT_EQ(x.m_spectators.size(), 2);
1411 EXPECT_FLOAT_EQ(x.m_spectators[0], 1.6);
1412 EXPECT_FLOAT_EQ(x.m_spectators[1], 1.7);
1413 EXPECT_FLOAT_EQ(x.m_weight, 1.2);
1414 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1415 EXPECT_EQ(x.m_isSignal,
true);
1418 EXPECT_EQ(x.m_input.size(), 4);
1419 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
1420 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
1421 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
1422 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
1423 EXPECT_EQ(x.m_spectators.size(), 2);
1424 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
1425 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
1426 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
1427 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1428 EXPECT_EQ(x.m_isSignal,
false);
1431 EXPECT_EQ(x.m_input.size(), 4);
1432 EXPECT_FLOAT_EQ(x.m_input[0], 2.0);
1433 EXPECT_FLOAT_EQ(x.m_input[1], 2.1);
1434 EXPECT_FLOAT_EQ(x.m_input[2], 2.4);
1435 EXPECT_FLOAT_EQ(x.m_input[3], 2.5);
1436 EXPECT_EQ(x.m_spectators.size(), 2);
1437 EXPECT_FLOAT_EQ(x.m_spectators[0], 2.6);
1438 EXPECT_FLOAT_EQ(x.m_spectators[1], 2.7);
1439 EXPECT_FLOAT_EQ(x.m_weight, 2.2);
1440 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1441 EXPECT_EQ(x.m_isSignal,
false);
1444 EXPECT_EQ(x.m_input.size(), 4);
1445 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
1446 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
1447 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
1448 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
1449 EXPECT_EQ(x.m_spectators.size(), 2);
1450 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
1451 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
1452 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
1453 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1454 EXPECT_EQ(x.m_isSignal,
true);
1457 EXPECT_EQ(x.m_input.size(), 4);
1458 EXPECT_FLOAT_EQ(x.m_input[0], 3.0);
1459 EXPECT_FLOAT_EQ(x.m_input[1], 3.1);
1460 EXPECT_FLOAT_EQ(x.m_input[2], 3.4);
1461 EXPECT_FLOAT_EQ(x.m_input[3], 3.5);
1462 EXPECT_EQ(x.m_spectators.size(), 2);
1463 EXPECT_FLOAT_EQ(x.m_spectators[0], 3.6);
1464 EXPECT_FLOAT_EQ(x.m_spectators[1], 3.7);
1465 EXPECT_FLOAT_EQ(x.m_weight, 3.2);
1466 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1467 EXPECT_EQ(x.m_isSignal,
true);
1470 EXPECT_EQ(x.m_input.size(), 4);
1471 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
1472 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
1473 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
1474 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
1475 EXPECT_EQ(x.m_spectators.size(), 2);
1476 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
1477 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
1478 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
1479 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1480 EXPECT_EQ(x.m_isSignal,
false);
1483 EXPECT_EQ(x.m_input.size(), 4);
1484 EXPECT_FLOAT_EQ(x.m_input[0], 4.0);
1485 EXPECT_FLOAT_EQ(x.m_input[1], 4.1);
1486 EXPECT_FLOAT_EQ(x.m_input[2], 4.4);
1487 EXPECT_FLOAT_EQ(x.m_input[3], 4.5);
1488 EXPECT_EQ(x.m_spectators.size(), 2);
1489 EXPECT_FLOAT_EQ(x.m_spectators[0], 4.6);
1490 EXPECT_FLOAT_EQ(x.m_spectators[1], 4.7);
1491 EXPECT_FLOAT_EQ(x.m_weight, 4.2);
1492 EXPECT_FLOAT_EQ(x.m_target, 0.0);
1493 EXPECT_EQ(x.m_isSignal,
false);
1496 EXPECT_EQ(x.m_input.size(), 4);
1497 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
1498 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
1499 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
1500 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
1501 EXPECT_EQ(x.m_spectators.size(), 2);
1502 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
1503 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
1504 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
1505 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1506 EXPECT_EQ(x.m_isSignal,
true);
1509 EXPECT_EQ(x.m_input.size(), 4);
1510 EXPECT_FLOAT_EQ(x.m_input[0], 5.0);
1511 EXPECT_FLOAT_EQ(x.m_input[1], 5.1);
1512 EXPECT_FLOAT_EQ(x.m_input[2], 5.4);
1513 EXPECT_FLOAT_EQ(x.m_input[3], 5.5);
1514 EXPECT_EQ(x.m_spectators.size(), 2);
1515 EXPECT_FLOAT_EQ(x.m_spectators[0], 5.6);
1516 EXPECT_FLOAT_EQ(x.m_spectators[1], 5.7);
1517 EXPECT_FLOAT_EQ(x.m_weight, 5.2);
1518 EXPECT_FLOAT_EQ(x.m_target, 1.0);
1519 EXPECT_EQ(x.m_isSignal,
true);
1521 EXPECT_FLOAT_EQ(x.getSignalFraction(), 0.6);
1523 auto feature = x.getFeature(1);
1524 EXPECT_EQ(feature.size(), 10);
1525 EXPECT_FLOAT_EQ(feature[0], 1.1);
1526 EXPECT_FLOAT_EQ(feature[1], 2.1);
1527 EXPECT_FLOAT_EQ(feature[2], 3.1);
1528 EXPECT_FLOAT_EQ(feature[3], 4.1);
1529 EXPECT_FLOAT_EQ(feature[4], 5.1);
1530 EXPECT_FLOAT_EQ(feature[5], 1.1);
1531 EXPECT_FLOAT_EQ(feature[6], 2.1);
1532 EXPECT_FLOAT_EQ(feature[7], 3.1);
1533 EXPECT_FLOAT_EQ(feature[8], 4.1);
1534 EXPECT_FLOAT_EQ(feature[9], 5.1);
1537 feature = x.Dataset::getFeature(1);
1538 EXPECT_EQ(feature.size(), 10);
1539 EXPECT_FLOAT_EQ(feature[0], 1.1);
1540 EXPECT_FLOAT_EQ(feature[1], 2.1);
1541 EXPECT_FLOAT_EQ(feature[2], 3.1);
1542 EXPECT_FLOAT_EQ(feature[3], 4.1);
1543 EXPECT_FLOAT_EQ(feature[4], 5.1);
1544 EXPECT_FLOAT_EQ(feature[5], 1.1);
1545 EXPECT_FLOAT_EQ(feature[6], 2.1);
1546 EXPECT_FLOAT_EQ(feature[7], 3.1);
1547 EXPECT_FLOAT_EQ(feature[8], 4.1);
1548 EXPECT_FLOAT_EQ(feature[9], 5.1);
1550 auto spectator = x.getSpectator(1);
1551 EXPECT_EQ(spectator.size(), 10);
1552 EXPECT_FLOAT_EQ(spectator[0], 1.7);
1553 EXPECT_FLOAT_EQ(spectator[1], 2.7);
1554 EXPECT_FLOAT_EQ(spectator[2], 3.7);
1555 EXPECT_FLOAT_EQ(spectator[3], 4.7);
1556 EXPECT_FLOAT_EQ(spectator[4], 5.7);
1557 EXPECT_FLOAT_EQ(spectator[5], 1.7);
1558 EXPECT_FLOAT_EQ(spectator[6], 2.7);
1559 EXPECT_FLOAT_EQ(spectator[7], 3.7);
1560 EXPECT_FLOAT_EQ(spectator[8], 4.7);
1561 EXPECT_FLOAT_EQ(spectator[9], 5.7);
1564 spectator = x.Dataset::getSpectator(1);
1565 EXPECT_EQ(spectator.size(), 10);
1566 EXPECT_FLOAT_EQ(spectator[0], 1.7);
1567 EXPECT_FLOAT_EQ(spectator[1], 2.7);
1568 EXPECT_FLOAT_EQ(spectator[2], 3.7);
1569 EXPECT_FLOAT_EQ(spectator[3], 4.7);
1570 EXPECT_FLOAT_EQ(spectator[4], 5.7);
1571 EXPECT_FLOAT_EQ(spectator[5], 1.7);
1572 EXPECT_FLOAT_EQ(spectator[6], 2.7);
1573 EXPECT_FLOAT_EQ(spectator[7], 3.7);
1574 EXPECT_FLOAT_EQ(spectator[8], 4.7);
1575 EXPECT_FLOAT_EQ(spectator[9], 5.7);
1577 auto weights = x.getWeights();
1578 EXPECT_EQ(weights.size(), 10);
1579 EXPECT_FLOAT_EQ(weights[0], 1.2);
1580 EXPECT_FLOAT_EQ(weights[1], 2.2);
1581 EXPECT_FLOAT_EQ(weights[2], 3.2);
1582 EXPECT_FLOAT_EQ(weights[3], 4.2);
1583 EXPECT_FLOAT_EQ(weights[4], 5.2);
1584 EXPECT_FLOAT_EQ(weights[5], 1.2);
1585 EXPECT_FLOAT_EQ(weights[6], 2.2);
1586 EXPECT_FLOAT_EQ(weights[7], 3.2);
1587 EXPECT_FLOAT_EQ(weights[8], 4.2);
1588 EXPECT_FLOAT_EQ(weights[9], 5.2);
1591 weights = x.Dataset::getWeights();
1592 EXPECT_EQ(weights.size(), 10);
1593 EXPECT_FLOAT_EQ(weights[0], 1.2);
1594 EXPECT_FLOAT_EQ(weights[1], 2.2);
1595 EXPECT_FLOAT_EQ(weights[2], 3.2);
1596 EXPECT_FLOAT_EQ(weights[3], 4.2);
1597 EXPECT_FLOAT_EQ(weights[4], 5.2);
1598 EXPECT_FLOAT_EQ(weights[5], 1.2);
1599 EXPECT_FLOAT_EQ(weights[6], 2.2);
1600 EXPECT_FLOAT_EQ(weights[7], 3.2);
1601 EXPECT_FLOAT_EQ(weights[8], 4.2);
1602 EXPECT_FLOAT_EQ(weights[9], 5.2);
1604 auto targets = x.getTargets();
1605 EXPECT_EQ(targets.size(), 10);
1606 EXPECT_FLOAT_EQ(targets[0], 1.0);
1607 EXPECT_FLOAT_EQ(targets[1], 0.0);
1608 EXPECT_FLOAT_EQ(targets[2], 1.0);
1609 EXPECT_FLOAT_EQ(targets[3], 0.0);
1610 EXPECT_FLOAT_EQ(targets[4], 1.0);
1611 EXPECT_FLOAT_EQ(targets[5], 1.0);
1612 EXPECT_FLOAT_EQ(targets[6], 0.0);
1613 EXPECT_FLOAT_EQ(targets[7], 1.0);
1614 EXPECT_FLOAT_EQ(targets[8], 0.0);
1615 EXPECT_FLOAT_EQ(targets[9], 1.0);
1617 auto signals = x.getSignals();
1618 EXPECT_EQ(signals.size(), 10);
1619 EXPECT_EQ(signals[0],
true);
1620 EXPECT_EQ(signals[1],
false);
1621 EXPECT_EQ(signals[2],
true);
1622 EXPECT_EQ(signals[3],
false);
1623 EXPECT_EQ(signals[4],
true);
1624 EXPECT_EQ(signals[5],
true);
1625 EXPECT_EQ(signals[6],
false);
1626 EXPECT_EQ(signals[7],
true);
1627 EXPECT_EQ(signals[8],
false);
1628 EXPECT_EQ(signals[9],
true);
1634 general_options.m_weight_variable =
"__weight__";
1637 weights = y.getWeights();
1638 EXPECT_EQ(weights.size(), 10);
1639 EXPECT_FLOAT_EQ(weights[0], 1.2);
1640 EXPECT_FLOAT_EQ(weights[1], 2.2);
1641 EXPECT_FLOAT_EQ(weights[2], 3.2);
1642 EXPECT_FLOAT_EQ(weights[3], 4.2);
1643 EXPECT_FLOAT_EQ(weights[4], 5.2);
1644 EXPECT_FLOAT_EQ(weights[5], 1.2);
1645 EXPECT_FLOAT_EQ(weights[6], 2.2);
1646 EXPECT_FLOAT_EQ(weights[7], 3.2);
1647 EXPECT_FLOAT_EQ(weights[8], 4.2);
1648 EXPECT_FLOAT_EQ(weights[9], 5.2);
1651 general_options.m_datafiles = {
"datafile*.root"};
1654 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
1656 boost::filesystem::copy_file(
"datafile.root",
"datafile3.root");
1659 EXPECT_EQ(chain_test.getNumberOfEvents(), 15);
1661 boost::filesystem::copy_file(
"datafile.root",
"datafile4.root");
1664 EXPECT_EQ(chain_test.getNumberOfEvents(), 20);
1668 general_options.m_max_events = 10;
1670 EXPECT_EQ(chain_test.getNumberOfEvents(), 10);
1671 general_options.m_max_events = 0;
1676 boost::filesystem::copy_file(
"datafile.root",
"datafile*.root");
1678 general_options.m_max_events = 0;
1680 EXPECT_EQ(chain_test.getNumberOfEvents(), 5);
Wraps two other Datasets, one containing signal, the other background events Used by the reweighting ...
Abstract base class of all Datasets given to the MVA interface The current event can always be access...
General options which are shared by all MVA trainings.
Wraps the data of a multiple event into a Dataset.
Proivdes a dataset from a ROOT file This is the usually used dataset providing training data to the m...
Wraps the data of a single event into a Dataset.
Wraps another Dataset and provides a view to a subset of its features and events.
changes working directory into a newly created directory, and removes it (and contents) on destructio...
TEST(TestgetDetectorRegion, TestgetDetectorRegion)
Test Constructors.
Abstract base class for different kinds of events.