00001
00002
00003
00004
00005 #ifndef Prior_h
00006 #define Prior_h
00007
00008 #include <string>
00009
00010 #include "BIEconfig.h"
00011 #include "Distribution.h"
00012 #include "UniformDist.h"
00013 #include "GaussianDist.h"
00014 #include "WeibullDist.h"
00015
00016 #include "Serializable.h"
00017
00018
00019 namespace BIE {
00020
00021
00085 class Prior : public Distribution
00086 {
00087
00088 protected:
00089
00091 int Ndim;
00092
00094 vector<Distribution*> _dist;
00095
00097 vector<int> _type;
00098
00100 State v1;
00101
00102 public:
00103
00106
00107
00109 Prior() : Ndim(0) {};
00110
00112 Prior(Prior* p);
00113
00114
00116 Prior(string pfile);
00117
00119 ~Prior();
00120
00122
00125
00126 Prior* New();
00127
00129 virtual double PDF(State&);
00130
00132 virtual double logPDF(State&);
00133
00135 virtual vector<double> lower(void);
00136
00138 virtual vector<double> upper(void);
00139
00141 virtual vector<double> Mean(void);
00142
00144 virtual vector<double> StdDev(void);
00145
00147 virtual vector<double> Moments(int);
00148
00150 virtual vector<double> Sample(void);
00152
00153
00154 private:
00155 friend class boost::serialization::access;
00156 template<class Archive>
00157 void serialize(Archive & ar, const unsigned int version) {
00158 this->pre_serialize(ar, version);
00159 try {
00160 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Distribution);
00161 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00162 }
00163 try {
00164 ar & BOOST_SERIALIZATION_NVP(Ndim);
00165 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00166 }
00167 try {
00168 ar & BOOST_SERIALIZATION_NVP(_dist);
00169 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00170 }
00171 try {
00172 ar & BOOST_SERIALIZATION_NVP(_type);
00173 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00174 }
00175 try {
00176 ar & BOOST_SERIALIZATION_NVP(v1);
00177 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00178 }
00179 this->post_serialize(ar, version);
00180 }
00181
00182 };
00183 }
00184
00185 BIE_CLASS_TYPE_INFO(BIE::Prior)
00186 BIE_CLASS_EXPORT_KEY(BIE::Prior)
00187 #endif