KrisLibrary  1.0.0
StatDatabase.h
1 #ifndef STATISTICS_DATABASE_H
2 #define STATISTICS_DATABASE_H
3 
4 #include <KrisLibrary/utils/NamedTree.h>
5 #include "DistributionCollector.h"
6 
7 namespace Statistics {
8 
15 struct SuperStatCollector : public DistributionCollectorND
16 {
17  void record(const Vector& x) { collect(x); data.push_back(x); }
18  void record(Real x1) { Vector x(1); x(0)=x1; record(x); }
19  void record(Real x1,Real x2) { Vector x(2); x(0)=x1; x(1)=x2; record(x); }
20  void record(Real x1,Real x2,Real x3) { Vector x(3); x(0)=x1; x(1)=x2; x(2)=x3; record(x); }
21 
22  vector<Vector> data;
23 };
24 
25 struct StatDatabase : public NamedTree<SuperStatCollector>
26 {
27  void collect(const std::string& name,const Vector& x) { Insert(name).collect(x); }
28  void collect(const std::string& name,Real x1) { Insert(name).collect(x1); }
29  void collect(const std::string& name,Real x1,Real x2) { Insert(name).collect(x1,x2); }
30  void collect(const std::string& name,Real x1,Real x2,Real x3) { Insert(name).collect(x1,x2,x3); }
31 
32  void collect(const std::string& s1,const std::string& s2,const Vector& x) { Insert(s1).Insert(s2).collect(x); }
33  void collect(const std::string& s1,const std::string& s2,Real x1) { Insert(s1).Insert(s2).collect(x1); }
34  void collect(const std::string& s1,const std::string& s2,Real x1,Real x2) { Insert(s1).Insert(s2).collect(x1,x2); }
35  void collect(const std::string& s1,const std::string& s2,Real x1,Real x2,Real x3) { Insert(s1).Insert(s2).collect(x1,x2,x3); }
36 
37  void collect(const std::string& s1,const std::string& s2,const std::string& s3,const Vector& x) { Insert(s1).Insert(s2).Insert(s3).collect(x); }
38  void collect(const std::string& s1,const std::string& s2,const std::string& s3,Real x1) { Insert(s1).Insert(s2).Insert(s3).collect(x1); }
39  void collect(const std::string& s1,const std::string& s2,const std::string& s3,Real x1,Real x2) { Insert(s1).Insert(s2).Insert(s3).collect(x1,x2); }
40  void collect(const std::string& s1,const std::string& s2,const std::string& s3,Real x1,Real x2,Real x3) { Insert(s1).Insert(s2).Insert(s3).collect(x1,x2,x3); }
41 
42  void record(const std::string& name,const Vector& x) { Insert(name).record(x); }
43  void record(const std::string& name,Real x1) { Insert(name).record(x1); }
44  void record(const std::string& name,Real x1,Real x2) { Insert(name).record(x1,x2); }
45  void record(const std::string& name,Real x1,Real x2,Real x3) { Insert(name).record(x1,x2,x3); }
46 
47  void record(const std::string& s1,const std::string& s2,const Vector& x) { Insert(s1).Insert(s2).record(x); }
48  void record(const std::string& s1,const std::string& s2,Real x1) { Insert(s1).Insert(s2).record(x1); }
49  void record(const std::string& s1,const std::string& s2,Real x1,Real x2) { Insert(s1).Insert(s2).record(x1,x2); }
50  void record(const std::string& s1,const std::string& s2,Real x1,Real x2,Real x3) { Insert(s1).Insert(s2).record(x1,x2,x3); }
51 
52 
53  void record(const std::string& s1,const std::string& s2, const std::string& s3,const Vector& x) { Insert(s1).Insert(s2).Insert(s3).record(x); }
54  void record(const std::string& s1,const std::string& s2, const std::string& s3,Real x1) { Insert(s1).Insert(s2).Insert(s3).record(x1); }
55  void record(const std::string& s1,const std::string& s2, const std::string& s3,Real x1,Real x2) { Insert(s1).Insert(s2).Insert(s3).record(x1,x2); }
56  void record(const std::string& s1,const std::string& s2, const std::string& s3,Real x1,Real x2,Real x3) { Insert(s1).Insert(s2).Insert(s3).record(x1,x2,x3); }
57 };
58 
59 #endif
A heirarchical database of statistical data (counts and StatCollectors). Useful for performance testi...
Definition: StatCollector.h:58
Contains all definitions in the statistics directory.
Definition: BernoulliDistribution.h:6