BIE |
/home/weinberg/src/BIE/PopModel/PopModelND.h00001 // This is really -*- C++ -*- 00002 00003 00004 00005 #ifndef PopModelND_h 00006 #define PopModelND_h 00007 00008 #include "Serializable.h" 00009 00010 00011 #include <gaussQ.h> 00012 #include <Model.h> 00013 #include <Histogram1D.h> 00014 #include <BIEconfig.h> 00015 00016 #include <PopulationsApp.h> 00017 00018 namespace BIE { 00019 00020 typedef vector<double> dvector; 00021 typedef vector<real> rvector; 00022 class NDPopCachedModel; 00023 00027 //+ CLICLASS PopModelND SUPER Model 00028 class PopModelND : public Model 00029 { 00030 public: 00031 00032 //+ CLICONSTR int int SampleDistribution* 00037 PopModelND(int ndim, int mdim, SampleDistribution *dist); 00038 00040 ~PopModelND(); 00041 00042 //+ CLIMETHOD void SetKnots int 00044 void SetKnots(int num) 00045 { 00046 NUM = num; 00047 delete intgr; 00048 intgr = new JacoQuad(NUM, ALPHA, BETA); 00049 } 00050 00052 00053 00054 void Initialize(State&); 00056 void Initialize(vector<double>& w, vector<double>*& p); 00058 00060 void ResetCache() {listCntr = 0;} 00061 00063 virtual double NormEval(double x, double y, SampleDistribution *d); 00064 00066 virtual vector<double> Evaluate(double x, double y, SampleDistribution *d); 00067 00069 string ParameterDescription(int i); 00070 00072 int DataDimension() { return 1; } 00073 00074 00077 00079 static int NUM; 00080 00082 static double METAL; 00083 00097 00098 static double ALPHA; 00100 static double BETA; 00102 00104 static double R0; 00105 00107 static double RMAX; 00108 00110 00111 00112 static double AMIN; // Defaults: 0.2 00114 static double AMAX; // 8.0 00116 static double HMIN; // 50.0 00118 static double HMAX; // 1200.0 00120 00122 static double NU; // Defaults: 1.0 00123 00125 static string DataDir; // Defaults: "/proj/weinberg/3Mtab"; 00126 00128 00129 protected: 00130 00132 PopulationsApp *pops; 00133 00135 00136 00137 static double Log10; 00139 static double onedeg; 00141 00142 00144 00145 00146 int nbins; 00148 vector<dvector> lowb; 00150 vector<dvector> highb; 00152 00154 int Nflux; 00155 00156 // Stellar components 00158 // int @autopersist(nparam); 00159 // vector<double> @autopersist(w); 00160 // vector<dvector> @autopersist(pos), @autopersist(sig); 00162 00164 JacoQuad *intgr; 00165 00167 int M; 00168 00170 int Mcur; 00171 00173 int Ndim; 00174 00176 00177 vector<double> wt, *pt; 00179 00181 vector<double> work; 00182 00184 virtual void generate(double L, double B, SampleDistribution *sd); 00186 virtual void compute_bins(); 00187 00189 bool good_bounds; 00191 void check_bounds(); 00192 00194 00195 00196 vector<NDPopCachedModel*> cache; 00198 int listCntr; 00200 int missed; 00202 int nages; 00204 00206 EvalType type; 00207 00208 // AUTO GENERATED BY ../persistence/autopersist.py 00209 protected: 00210 PopModelND() {} 00211 private: 00212 friend class boost::serialization::access; 00213 template<class Archive> 00214 void serialize(Archive & ar, const unsigned int version) { 00215 this->pre_serialize(ar, version); 00216 try { 00217 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Model); 00218 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00219 } 00220 try { 00221 ar & BOOST_SERIALIZATION_NVP(NUM); 00222 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00223 } 00224 try { 00225 ar & BOOST_SERIALIZATION_NVP(METAL); 00226 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00227 } 00228 try { 00229 ar & BOOST_SERIALIZATION_NVP(ALPHA); 00230 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00231 } 00232 try { 00233 ar & BOOST_SERIALIZATION_NVP(BETA); 00234 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00235 } 00236 try { 00237 ar & BOOST_SERIALIZATION_NVP(R0); 00238 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00239 } 00240 try { 00241 ar & BOOST_SERIALIZATION_NVP(RMAX); 00242 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00243 } 00244 try { 00245 ar & BOOST_SERIALIZATION_NVP(AMIN); 00246 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00247 } 00248 try { 00249 ar & BOOST_SERIALIZATION_NVP(AMAX); 00250 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00251 } 00252 try { 00253 ar & BOOST_SERIALIZATION_NVP(HMIN); 00254 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00255 } 00256 try { 00257 ar & BOOST_SERIALIZATION_NVP(HMAX); 00258 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00259 } 00260 try { 00261 ar & BOOST_SERIALIZATION_NVP(NU); 00262 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00263 } 00264 try { 00265 ar & BOOST_SERIALIZATION_NVP(DataDir); 00266 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00267 } 00268 try { 00269 ar & BOOST_SERIALIZATION_NVP(pops); 00270 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00271 } 00272 try { 00273 ar & BOOST_SERIALIZATION_NVP(Log10); 00274 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00275 } 00276 try { 00277 ar & BOOST_SERIALIZATION_NVP(onedeg); 00278 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00279 } 00280 try { 00281 ar & BOOST_SERIALIZATION_NVP(nbins); 00282 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00283 } 00284 try { 00285 ar & BOOST_SERIALIZATION_NVP(lowb); 00286 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00287 } 00288 try { 00289 ar & BOOST_SERIALIZATION_NVP(highb); 00290 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00291 } 00292 try { 00293 ar & BOOST_SERIALIZATION_NVP(Nflux); 00294 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00295 } 00296 try { 00297 ar & BOOST_SERIALIZATION_NVP(intgr); 00298 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00299 } 00300 try { 00301 ar & BOOST_SERIALIZATION_NVP(M); 00302 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00303 } 00304 try { 00305 ar & BOOST_SERIALIZATION_NVP(Mcur); 00306 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00307 } 00308 try { 00309 ar & BOOST_SERIALIZATION_NVP(Ndim); 00310 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00311 } 00312 try { 00313 ar & BOOST_SERIALIZATION_NVP(wt); 00314 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00315 } 00316 try { 00317 ar & BOOST_SERIALIZATION_NVP(pt); 00318 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00319 } 00320 try { 00321 ar & BOOST_SERIALIZATION_NVP(work); 00322 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00323 } 00324 try { 00325 ar & BOOST_SERIALIZATION_NVP(cache); 00326 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00327 } 00328 try { 00329 ar & BOOST_SERIALIZATION_NVP(listCntr); 00330 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00331 } 00332 try { 00333 ar & BOOST_SERIALIZATION_NVP(missed); 00334 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00335 } 00336 try { 00337 ar & BOOST_SERIALIZATION_NVP(nages); 00338 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00339 } 00340 try { 00341 ar & BOOST_SERIALIZATION_NVP(type); 00342 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00343 } 00344 this->post_serialize(ar, version); 00345 } 00346 00347 00348 }; 00349 00351 class NDPopCachedModel: public Serializable 00352 { 00353 public: 00354 00356 00357 00358 double L; 00360 double B; 00362 00363 vector<real> bins; 00365 00366 00367 vector<real> R; 00369 vector<real> z; 00371 vector<real> fac; 00373 00375 vector<rvector>* work; 00376 00378 NDPopCachedModel(double ll, double bb) { 00379 L = ll; 00380 B = bb; 00381 work = NULL; 00382 } 00383 00385 ~NDPopCachedModel () { 00386 delete [] work; 00387 } 00388 00390 void SetNumberComp(int nages, int nlos) { 00391 delete [] work; 00392 work = new vector<rvector> [nages]; 00393 for (int i=0; i<nages; i++) work[i] = vector<rvector>(nlos); 00394 } 00395 00396 // AUTO GENERATED BY ../persistence/autopersist.py 00397 protected: 00398 NDPopCachedModel() {} 00399 private: 00400 friend class boost::serialization::access; 00401 template<class Archive> 00402 void serialize(Archive & ar, const unsigned int version) { 00403 this->pre_serialize(ar, version); 00404 try { 00405 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00406 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00407 } 00408 try { 00409 ar & BOOST_SERIALIZATION_NVP(L); 00410 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00411 } 00412 try { 00413 ar & BOOST_SERIALIZATION_NVP(B); 00414 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00415 } 00416 try { 00417 ar & BOOST_SERIALIZATION_NVP(bins); 00418 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00419 } 00420 try { 00421 ar & BOOST_SERIALIZATION_NVP(R); 00422 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00423 } 00424 try { 00425 ar & BOOST_SERIALIZATION_NVP(z); 00426 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00427 } 00428 try { 00429 ar & BOOST_SERIALIZATION_NVP(fac); 00430 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00431 } 00432 try { 00433 ar & BOOST_SERIALIZATION_NVP(work); 00434 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00435 } 00436 this->post_serialize(ar, version); 00437 } 00438 00439 }; 00440 } 00441 00442 BIE_CLASS_TYPE_INFO(BIE::PopModelND) 00443 BIE_CLASS_TYPE_INFO(BIE::NDPopCachedModel) 00444 BIE_CLASS_EXPORT_KEY(BIE::PopModelND) 00445 BIE_CLASS_EXPORT_KEY(BIE::NDPopCachedModel) 00446 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:11 2010 by
|