00001
00002
00003
00004 #ifndef OneBin_h
00005 #define OneBin_h
00006
00007 #include <values.h>
00008 #include "Distribution.h"
00009
00010 #include "Serializable.h"
00011
00012
00013 namespace BIE {
00014
00020 class OneBin : public BinnedDistribution
00021 {
00022
00023 public:
00025 OneBin() : icnt(0) { recordtype = new RecordType(); }
00026
00028 ~OneBin() { }
00029
00033 bool AccumulateData(double x, State& z) {++icnt; return true;}
00037 bool AccumulateData(double x, RecordBuffer * datapoint) {++icnt; return true;}
00038
00040 double PDF(State&) {return 1.0;}
00041
00043 double logPDF(State&) {return 0.0;}
00044
00046 double CDF(State&) {return 1.0;}
00047
00049 vector<double> lower(void) {return vector<double>(1, -MAXDOUBLE);}
00050
00052 vector<double> upper(void) {return vector<double>(1, MAXDOUBLE);}
00053
00055 vector<double> Mean(void) {return vector<double>(1, 0.0);}
00056
00058 vector<double> StdDev(void) {return vector<double>(1, 0.0);}
00059
00061 vector<double> Moments(int i) {return vector<double>(1, 0.0);}
00062
00064 vector<double> Sample(void) {
00065 cerr << "OneBin::Sample: Not implemented\n";
00066 return vector<double>(1, 0.0);}
00067
00068
00070 void ComputeDistribution(void) {}
00071
00073 OneBin* New() {
00074 return new OneBin();
00075 }
00076
00078 int numberData() {return icnt;}
00079
00080 private:
00082 int icnt;
00083
00084
00085 private:
00086 friend class boost::serialization::access;
00087 template<class Archive>
00088 void serialize(Archive & ar, const unsigned int version) {
00089 this->pre_serialize(ar, version);
00090 try {
00091 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BinnedDistribution);
00092 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00093 }
00094 try {
00095 ar & BOOST_SERIALIZATION_NVP(icnt);
00096 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00097 }
00098 this->post_serialize(ar, version);
00099 }
00100
00101 };
00102
00103 }
00104 BIE_CLASS_TYPE_INFO(BIE::OneBin)
00105 BIE_CLASS_EXPORT_KEY(BIE::OneBin)
00106 #endif