BIE |
/home/weinberg/src/BIE/include/CountConverge.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef CountConverge_h 00004 #define CountConverge_h 00005 00006 #include <typeinfo> 00007 #include <mpi.h> 00008 00009 #include "Ensemble.h" 00010 #include "Converge.h" 00011 00012 #include "Serializable.h" 00013 00014 00015 using namespace std; 00016 00017 namespace BIE { 00018 00019 //+ CLICLASS CountConverge SUPER Converge 00024 class CountConverge : public Converge 00025 { 00026 private: 00027 int count, nburn; 00028 int max; 00029 Ensemble* _dist; 00030 double lastvalue; 00031 State laststate; 00032 00033 public: 00036 //+ CLICONSTR int Ensemble* 00038 CountConverge(int m, Ensemble* d); 00039 //+ CLICONSTR int Ensemble* int 00041 CountConverge(int m, Ensemble* d, int nburn); 00043 00045 virtual CountConverge* New(int m, Ensemble* d, string id="") { 00046 return new CountConverge(m, d, nburn); 00047 } 00048 00050 virtual bool Converged() { if (count>=max) return true; return false; } 00051 00053 00055 virtual bool AccumData(double value, State& state) { 00056 count++; 00057 lastvalue = value; 00058 laststate = state; 00059 return _dist->AccumData(value, state); 00060 } 00061 00063 virtual bool GetLast(double& value, State& state) { 00064 if (count) { 00065 value = lastvalue; 00066 state = laststate; 00067 return true; 00068 } else { 00069 return false; 00070 } 00071 } 00072 00075 void ComputeDistribution() { 00076 _dist->ComputeDistribution(); 00077 } 00078 00079 //+ CLIMETHOD void setNmax int 00081 void setNmax(int n) { max = n; } 00082 00083 //+ CLIMETHOD void setNburn int 00085 void setNburn(int n) { nburn = n; } 00086 00088 int ConvergedIndex() { return count>nburn ? nburn : 0; } 00089 00090 //+ CLIMETHOD int BurnIn 00092 int BurnIn(); 00093 00096 double PDF(State& x) {return _dist->PDF(x);} 00097 double logPDF(State& x) {return _dist->logPDF(x);} 00098 vector<double> lower(void) {return _dist->lower();} 00099 vector<double> upper(void) {return _dist->upper();} 00100 vector<double> Mean() {return _dist->Mean();} 00101 vector<double> StdDev() {return _dist->StdDev();} 00102 vector<double> Moments(int m) {return _dist->Moments(m);} 00103 vector<double> Sample() {return _dist->Sample();} 00105 00107 CountConverge* New() { 00108 CountConverge *p = new CountConverge(max, _dist->New()); 00109 return p; 00110 } 00111 00112 // AUTO GENERATED BY ../persistence/autopersist.py 00113 protected: 00114 CountConverge() {} 00115 private: 00116 friend class boost::serialization::access; 00117 template<class Archive> 00118 void serialize(Archive & ar, const unsigned int version) { 00119 this->pre_serialize(ar, version); 00120 try { 00121 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Converge); 00122 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00123 } 00124 try { 00125 ar & BOOST_SERIALIZATION_NVP(count); 00126 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00127 } 00128 try { 00129 ar & BOOST_SERIALIZATION_NVP(nburn); 00130 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00131 } 00132 try { 00133 ar & BOOST_SERIALIZATION_NVP(max); 00134 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00135 } 00136 try { 00137 ar & BOOST_SERIALIZATION_NVP(_dist); 00138 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00139 } 00140 try { 00141 ar & BOOST_SERIALIZATION_NVP(lastvalue); 00142 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00143 } 00144 try { 00145 ar & BOOST_SERIALIZATION_NVP(laststate); 00146 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00147 } 00148 this->post_serialize(ar, version); 00149 } 00150 00151 }; 00152 } 00153 00154 00155 BIE_CLASS_TYPE_INFO(BIE::CountConverge) 00156 BIE_CLASS_EXPORT_KEY(BIE::CountConverge) 00157 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|