source:trunk/lib/statistics/Histogram.cc@298

Last change on this file since 298 was 298, checked in by Peter, 18 years ago

fixed include problems

• Property svn:eol-style set to `native`
• Property svn:keywords set to `Author Date Id Revision`
File size: 1.9 KB
Line
1// \$Id: Histogram.cc 298 2005-04-29 12:16:21Z peter \$
2
3#include <c++_tools/statistics/Histogram.h>
4
5#include <cmath>
6#include <fstream>
7
8
9namespace theplu {
10namespace statistics {
11
12
13Histogram::Histogram(void)
14  : xmax_(0), xmin_(0), sum_all_(), sum_histogram_()
15{
16}
17
18
19
20Histogram::Histogram(const Histogram& b)
21{
22  *this=b;
23}
24
25
26
27Histogram::Histogram(const double min, const double max, const size_t n)
28  : histogram_(std::vector<double>(n,0.0)),
29    xmax_(max), xmin_(min),
30    sum_all_(), sum_histogram_()
31{
32}
33
34
35
36Histogram::~Histogram(void)
37{
38}
39
40
41
42int Histogram::add(const double x, const double w)
43{
45  if (x<xmin_)
46    return -1;
47  else if (x>=xmax_)
48    return 1;
49
51  histogram_[bin(x)] += w;
52  return 0;
53}
54
55
56
57void Histogram::normalize(double scale_factor)
58{
59  for (size_t i=0; i<histogram_.size(); i++)
60    histogram_[i]/=scale_factor;
61}
62
63
64void Histogram::reset(void)
65{
66  for (u_int i=0; i<histogram_.size(); i++)
67    histogram_[i]=0;
68  sum_all_.reset();
69  sum_histogram_.reset();
70}
71
72
73
74const Histogram& Histogram::operator=(const Histogram& b)
75{
76  if (this==&b)
77    return *this;
78  histogram_=b.histogram_;
79  xmax_=b.xmax_;
80  xmin_=b.xmin_;
81  sum_all_=b.sum_all_;
82  sum_histogram_=b.sum_histogram_;
83  return *this;
84}
85
86
87
88std::ostream& operator<<(std::ostream& s,const Histogram& histogram)
89{
90  s << "# histogram min : " << histogram.xmin() << '\n';
91  s << "# histogram max : " << histogram.xmax() << '\n';
92  s << "# number of bins: " << histogram.nof_bins() << '\n';
93  s << "# nof points in histogram : "
94    << histogram.averager_histogram().sum_w() << '\n';
95  s << "# nof points in total:      "
96    << histogram.averager_all().sum_w() << '\n';
97  s << "# column 1: center of observation bin\n"
98    << "# column 2: frequency\n";
99
100  for (u_int i=0; i<histogram.nof_bins(); i++) {
101    s.width(12);
102    s << histogram.observation_value(i);
103    s.width(12);
104    s << histogram[i] << '\n';
105  }
106
107  return s;
108}
109
110}} // of namespace statistics and namespace theplu
Note: See TracBrowser for help on using the repository browser.