herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
utilitiesTestsStatistic.h
1 // -*- C++ -*-
2 //
3 // utilitiesTestStatistic.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration, 2015 Marco A. Harrendorf
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_Utilities_Test_Statistic_H
10 #define HERWIG_Utilities_Test_Statistic_H
11 
12 #include <boost/test/unit_test.hpp>
13 
14 #include "Herwig/Utilities/Statistic.h"
15 
16 /*
17  * Fixture which defines the common variables for testing Statistic class
18  */
19 struct FixStatistic1 {
20  FixStatistic1() : statisticDefault(), statisticTest()
21  {BOOST_TEST_MESSAGE( "setup fixture for utilitiesStatisticTest" ); }
22 
23  ~FixStatistic1() { BOOST_TEST_MESSAGE( "teardown fixture for utilitiesStatisticTest" ); }
24 
25  Herwig::Statistic statisticDefault;
26  Herwig::Statistic statisticTest;
27 };
28 
29 /*
30  * Start of boost unit tests for Statistic.h
31  *
32  */
33 BOOST_FIXTURE_TEST_SUITE(utilitiesStatisticTest, FixStatistic1 )
34 
35 /*
36  * Boost unit tests
37  *
38  */
39 BOOST_AUTO_TEST_CASE(defaultConstructor)
40 {
41  BOOST_CHECK_EQUAL(statisticDefault.numberOfPoints(), static_cast<unsigned int>(0));
42  BOOST_CHECK_EQUAL(statisticDefault.total(), 0.);
43  BOOST_CHECK_EQUAL(statisticDefault.mean(), 0.);
44  BOOST_CHECK_EQUAL(statisticDefault.minimum(), -1e100);
45  BOOST_CHECK_EQUAL(statisticDefault.maximum(), 1e100);
46  BOOST_CHECK_EQUAL(statisticDefault.var(), 0);
47  BOOST_CHECK_EQUAL(statisticDefault.mean_var(), 0);
48 }
49 
50 BOOST_AUTO_TEST_CASE(operations)
51 {
52  statisticTest += 2;
53  BOOST_CHECK_EQUAL(statisticTest.minimum(), 2);
54  BOOST_CHECK_EQUAL(statisticTest.maximum(), 2);
55 
56  statisticTest += -2;
57  BOOST_CHECK_EQUAL(statisticTest.numberOfPoints(), static_cast<unsigned int>(2));
58  BOOST_CHECK_EQUAL(statisticTest.total(), 0.);
59  BOOST_CHECK_EQUAL(statisticTest.mean(), 0.);
60  BOOST_CHECK_EQUAL(statisticTest.minimum(), -2);
61  BOOST_CHECK_EQUAL(statisticTest.maximum(), 2);
62  BOOST_CHECK_EQUAL(statisticTest.var(), 8);
63  BOOST_CHECK_EQUAL(statisticTest.stdDev(), sqrt(8));
64  BOOST_CHECK_EQUAL(statisticTest.mean_var(), 4);
65  BOOST_CHECK_EQUAL(statisticTest.mean_stdDev(), 2);
66 
67  statisticTest += 2;
68  BOOST_CHECK_EQUAL(statisticTest.numberOfPoints(), static_cast<unsigned int>(3));
69  BOOST_CHECK_EQUAL(statisticTest.total(), 2.);
70  BOOST_CHECK_EQUAL(statisticTest.mean(), 2./3.);
71  BOOST_CHECK_EQUAL(statisticTest.minimum(), -2);
72  BOOST_CHECK_EQUAL(statisticTest.maximum(), 2);
73  BOOST_CHECK_EQUAL(statisticTest.var(), 16./3.);
74  BOOST_CHECK_EQUAL(statisticTest.stdDev(), sqrt(16./3.));
75  BOOST_CHECK_EQUAL(statisticTest.mean_var(), 16./9.);
76  BOOST_CHECK_EQUAL(statisticTest.mean_stdDev(), sqrt(16./9.));
77 
78  statisticTest += 4.5;
79  BOOST_CHECK_EQUAL(statisticTest.minimum(), -2);
80  BOOST_CHECK_EQUAL(statisticTest.maximum(), 4.5);
81 
82  statisticTest += -3.5;
83  BOOST_CHECK_EQUAL(statisticTest.minimum(), -3.5);
84  BOOST_CHECK_EQUAL(statisticTest.maximum(), 4.5);
85 }
86 
87 BOOST_AUTO_TEST_SUITE_END()
88 
89 #endif /* HERWIG_Utilities_Test_Statistic_H */
The Statistic class is a simple class designed to store a variable for statistical analysis...
Definition: Statistic.h:23
double sqrt(int x)
double maximum() const
The maximum value.
Definition: Statistic.h:41
double total() const
Total entry.
Definition: Statistic.h:105
double var() const
Variance.
Definition: Statistic.h:97
unsigned int numberOfPoints() const
Number of points.
Definition: Statistic.h:58
double mean() const
Mean.
Definition: Statistic.h:63
double minimum() const
The minimum value.
Definition: Statistic.h:36
double mean_var() const
Variance on the mean estimate.
Definition: Statistic.h:84