BIE |
/home/weinberg/src/BIE/PopModel/PopModelCache.h00001 // This is really -*- C++ -*- 00002 00003 00004 00005 #ifndef PopModelCache_h 00006 #define PopModelCache_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 PopCache; 00023 00024 //+ CLICLASS PopModelCache SUPER Model 00028 class PopModelCache : public Model 00029 { 00030 public: 00031 00032 //+ CLICONSTR int int SampleDistribution* 00034 PopModelCache(int ndim, int mdim, SampleDistribution *dist); 00035 00037 ~PopModelCache(); 00038 00039 //+ CLIMETHOD void SetKnots int 00041 void SetKnots(int num) 00042 { 00043 NUM = num; 00044 delete intgr; 00045 intgr = new JacoQuad(NUM, ALPHA, BETA); 00046 } 00047 00049 00050 00051 void Initialize(State&); 00053 void Initialize(vector<double>& w, vector<double>*& p); 00055 00057 void ResetCache() {listCntr = 0;} 00058 00060 virtual double NormEval(double x, double y, SampleDistribution *d); 00061 00063 virtual vector<double> Evaluate(double x, double y, SampleDistribution *d); 00064 00066 string ParameterDescription(int i); 00067 00069 int DataDimension() { return 1; } 00070 00071 00074 00076 static int NUM; 00077 00079 static double METAL; 00080 00085 00086 static double ALPHA; 00088 static double BETA; 00090 00092 static double R0; 00093 00095 static double A1; 00096 00098 static double Z1; 00099 00101 static double Z0; 00102 00104 static double EFAC; 00105 00107 00108 00109 static bool RING; 00111 static double RINGWIDTH; 00113 static double RINGAMP; 00115 static double RINGLOC; 00117 static double CENTERWIDTH; 00119 static double CENTERAMP; 00121 static double NEARBYWIDTH; 00123 static double NEARBYAMP; 00125 00127 static double RMIN; 00128 00130 static double RMAX; 00131 00133 static bool RLOG; 00134 00136 00137 00138 static double AMIN; // Defaults: 0.2 00140 static double AMAX; // 8.0 00142 static double HMIN; // 50.0 00144 static double HMAX; // 1200.0 00146 00148 static BirthRate BRmodel; // Default: Exponential 00149 00151 static double BURST; // Defaults: 0.0 00152 00154 static double NU; // Defaults: 1.0 00155 00157 static string DataDir; // Defaults: "/proj/weinberg/3Mtab"; 00158 00160 00161 protected: 00162 00164 PopulationsApp *pops; 00165 00167 00168 00169 static double Log10; 00171 static double onedeg; 00173 00175 pid_t pid; 00176 00178 00179 00180 int nbins; 00182 vector<dvector> lowb; 00184 vector<dvector> highb; 00186 00188 vector<double> flux; 00189 00191 int Nflux; 00192 00194 00195 // int @autopersist(nparam); 00196 // vector<double> @autopersist(w); 00197 // vector<dvector> @autopersist(pos), @autopersist(sig); 00199 00201 JacoQuad *intgr; 00202 00204 int M; 00205 00207 int Mcur; 00208 00210 int Ndim; 00211 00213 00214 00215 vector<double> wt; 00217 vector< vector<double> > pt; 00219 00221 vector<double> work; 00222 00224 virtual void generate(double L, double B); 00225 00227 virtual void compute_bins(SampleDistribution *sd); 00228 00230 bool good_bounds; 00232 void check_bounds(); 00233 00235 00236 00237 vector<PopCache*> cache; 00239 int listCntr; 00241 int missed; 00243 int nages; 00245 vector<double> ages; 00247 vector<double> popweight; 00249 00251 EvalType type; 00252 00253 // AUTO GENERATED BY ../persistence/autopersist.py 00254 protected: 00255 PopModelCache() {} 00256 private: 00257 friend class boost::serialization::access; 00258 template<class Archive> 00259 void serialize(Archive & ar, const unsigned int version) { 00260 this->pre_serialize(ar, version); 00261 try { 00262 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Model); 00263 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00264 } 00265 try { 00266 ar & BOOST_SERIALIZATION_NVP(NUM); 00267 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00268 } 00269 try { 00270 ar & BOOST_SERIALIZATION_NVP(METAL); 00271 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00272 } 00273 try { 00274 ar & BOOST_SERIALIZATION_NVP(ALPHA); 00275 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00276 } 00277 try { 00278 ar & BOOST_SERIALIZATION_NVP(BETA); 00279 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00280 } 00281 try { 00282 ar & BOOST_SERIALIZATION_NVP(R0); 00283 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00284 } 00285 try { 00286 ar & BOOST_SERIALIZATION_NVP(A1); 00287 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00288 } 00289 try { 00290 ar & BOOST_SERIALIZATION_NVP(Z1); 00291 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00292 } 00293 try { 00294 ar & BOOST_SERIALIZATION_NVP(Z0); 00295 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00296 } 00297 try { 00298 ar & BOOST_SERIALIZATION_NVP(EFAC); 00299 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00300 } 00301 try { 00302 ar & BOOST_SERIALIZATION_NVP(RING); 00303 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00304 } 00305 try { 00306 ar & BOOST_SERIALIZATION_NVP(RINGWIDTH); 00307 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00308 } 00309 try { 00310 ar & BOOST_SERIALIZATION_NVP(RINGAMP); 00311 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00312 } 00313 try { 00314 ar & BOOST_SERIALIZATION_NVP(RINGLOC); 00315 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00316 } 00317 try { 00318 ar & BOOST_SERIALIZATION_NVP(CENTERWIDTH); 00319 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00320 } 00321 try { 00322 ar & BOOST_SERIALIZATION_NVP(CENTERAMP); 00323 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00324 } 00325 try { 00326 ar & BOOST_SERIALIZATION_NVP(NEARBYWIDTH); 00327 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00328 } 00329 try { 00330 ar & BOOST_SERIALIZATION_NVP(NEARBYAMP); 00331 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00332 } 00333 try { 00334 ar & BOOST_SERIALIZATION_NVP(RMIN); 00335 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00336 } 00337 try { 00338 ar & BOOST_SERIALIZATION_NVP(RMAX); 00339 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00340 } 00341 try { 00342 ar & BOOST_SERIALIZATION_NVP(RLOG); 00343 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00344 } 00345 try { 00346 ar & BOOST_SERIALIZATION_NVP(AMIN); 00347 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00348 } 00349 try { 00350 ar & BOOST_SERIALIZATION_NVP(AMAX); 00351 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00352 } 00353 try { 00354 ar & BOOST_SERIALIZATION_NVP(HMIN); 00355 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00356 } 00357 try { 00358 ar & BOOST_SERIALIZATION_NVP(HMAX); 00359 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00360 } 00361 try { 00362 ar & BOOST_SERIALIZATION_NVP(BRmodel); 00363 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00364 } 00365 try { 00366 ar & BOOST_SERIALIZATION_NVP(BURST); 00367 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00368 } 00369 try { 00370 ar & BOOST_SERIALIZATION_NVP(NU); 00371 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00372 } 00373 try { 00374 ar & BOOST_SERIALIZATION_NVP(DataDir); 00375 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00376 } 00377 try { 00378 ar & BOOST_SERIALIZATION_NVP(pops); 00379 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00380 } 00381 try { 00382 ar & BOOST_SERIALIZATION_NVP(Log10); 00383 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00384 } 00385 try { 00386 ar & BOOST_SERIALIZATION_NVP(onedeg); 00387 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00388 } 00389 try { 00390 ar & BOOST_SERIALIZATION_NVP(pid); 00391 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00392 } 00393 try { 00394 ar & BOOST_SERIALIZATION_NVP(nbins); 00395 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00396 } 00397 try { 00398 ar & BOOST_SERIALIZATION_NVP(lowb); 00399 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00400 } 00401 try { 00402 ar & BOOST_SERIALIZATION_NVP(highb); 00403 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00404 } 00405 try { 00406 ar & BOOST_SERIALIZATION_NVP(flux); 00407 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00408 } 00409 try { 00410 ar & BOOST_SERIALIZATION_NVP(Nflux); 00411 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00412 } 00413 try { 00414 ar & BOOST_SERIALIZATION_NVP(intgr); 00415 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00416 } 00417 try { 00418 ar & BOOST_SERIALIZATION_NVP(M); 00419 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00420 } 00421 try { 00422 ar & BOOST_SERIALIZATION_NVP(Mcur); 00423 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00424 } 00425 try { 00426 ar & BOOST_SERIALIZATION_NVP(Ndim); 00427 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00428 } 00429 try { 00430 ar & BOOST_SERIALIZATION_NVP(wt); 00431 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00432 } 00433 try { 00434 ar & BOOST_SERIALIZATION_NVP(pt); 00435 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00436 } 00437 try { 00438 ar & BOOST_SERIALIZATION_NVP(work); 00439 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00440 } 00441 try { 00442 ar & BOOST_SERIALIZATION_NVP(good_bounds); 00443 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00444 } 00445 try { 00446 ar & BOOST_SERIALIZATION_NVP(cache); 00447 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00448 } 00449 try { 00450 ar & BOOST_SERIALIZATION_NVP(listCntr); 00451 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00452 } 00453 try { 00454 ar & BOOST_SERIALIZATION_NVP(missed); 00455 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00456 } 00457 try { 00458 ar & BOOST_SERIALIZATION_NVP(nages); 00459 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00460 } 00461 try { 00462 ar & BOOST_SERIALIZATION_NVP(ages); 00463 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00464 } 00465 try { 00466 ar & BOOST_SERIALIZATION_NVP(popweight); 00467 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00468 } 00469 try { 00470 ar & BOOST_SERIALIZATION_NVP(type); 00471 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00472 } 00473 this->post_serialize(ar, version); 00474 } 00475 00476 }; 00477 00478 00480 class PopCache: public Serializable 00481 { 00482 public: 00483 00485 00486 00487 double L; 00489 double B; 00491 00492 00493 00494 vector<real> R; 00496 vector<real> z; 00498 vector<real> fac; 00500 vector<real> dmod; 00502 vector<rvector> ext; 00504 00506 vector<real> bins; 00507 00509 PopCache(double ll, double bb) { 00510 L = ll; 00511 B = bb; 00512 } 00513 00514 // AUTO GENERATED BY ../persistence/autopersist.py 00515 protected: 00516 PopCache() {} 00517 private: 00518 friend class boost::serialization::access; 00519 template<class Archive> 00520 void serialize(Archive & ar, const unsigned int version) { 00521 this->pre_serialize(ar, version); 00522 try { 00523 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00524 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00525 } 00526 try { 00527 ar & BOOST_SERIALIZATION_NVP(L); 00528 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00529 } 00530 try { 00531 ar & BOOST_SERIALIZATION_NVP(B); 00532 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00533 } 00534 try { 00535 ar & BOOST_SERIALIZATION_NVP(R); 00536 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00537 } 00538 try { 00539 ar & BOOST_SERIALIZATION_NVP(z); 00540 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00541 } 00542 try { 00543 ar & BOOST_SERIALIZATION_NVP(fac); 00544 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00545 } 00546 try { 00547 ar & BOOST_SERIALIZATION_NVP(dmod); 00548 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00549 } 00550 try { 00551 ar & BOOST_SERIALIZATION_NVP(ext); 00552 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00553 } 00554 try { 00555 ar & BOOST_SERIALIZATION_NVP(bins); 00556 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00557 } 00558 this->post_serialize(ar, version); 00559 } 00560 00561 }; 00562 } 00563 00564 BIE_CLASS_TYPE_INFO(BIE::PopModelCache) 00565 BIE_CLASS_TYPE_INFO(BIE::PopCache) 00566 BIE_CLASS_EXPORT_KEY(BIE::PopModelCache) 00567 BIE_CLASS_EXPORT_KEY(BIE::PopCache) 00568 #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
|