BIE |
/home/weinberg/src/BIE/include/GalaxyModelND.h00001 // This is really -*- C++ -*- 00002 00003 00004 #ifndef GalaxyModelND_h 00005 #define GalaxyModelND_h 00006 00007 #include <gaussQ.h> 00008 #include <Model.h> 00009 #include <Histogram1D.h> 00010 #include <BIEconfig.h> 00011 00012 #include <cmath> 00013 #include <deque> 00014 #include <utility> 00015 00016 #include "CacheGalaxyModel.h" 00017 00018 #include "Serializable.h" 00019 00020 00021 namespace BIE { 00022 00023 //+ CLICLASS GalaxyModelND SUPER Model 00025 class GalaxyModelND : public Model 00026 { 00027 public: 00028 00029 //+ CLICONSTR int int SampleDistribution* 00031 GalaxyModelND(int ndim, int mdim, SampleDistribution *histo); 00032 00034 ~GalaxyModelND(); 00035 00036 //+ CLIMETHOD void SetKnots int 00038 void SetKnots(int num) 00039 { 00040 NUM = num; 00041 delete intgr; 00042 intgr = new JacoQuad(NUM, ALPHA, BETA); 00043 } 00044 00045 //+ CLIMETHOD void CacheLimit int 00047 void CacheLimit(int num) { cache_limit=num; } 00048 00049 //+ CLIMETHOD void SetExtinction double double 00051 void SetExtinction(double A, double Z) {A1 = A; Z1 = Z;} 00052 00054 00055 //@! From state vector 00056 void Initialize(State&); 00057 //@! From component weights and component parameter vectors 00058 void Initialize(vector<double>& w, vector< vector<double> >& p); 00060 00062 void ResetCache() {} 00063 00065 virtual double NormEval(double x, double y, SampleDistribution *d); 00066 00068 virtual double NormEval(double x, double y); 00069 00071 virtual double NormEvalMeasure(double x, double y) { return cos(y); } 00072 00074 vector<double> Evaluate(double x, double y, SampleDistribution *d); 00075 00077 string ParameterDescription(int i); 00078 00080 int DataDimension() { return 1; } 00081 00082 00085 00087 static double LMAG; 00088 00090 static double HMAG; 00091 00093 static double A1; 00094 00096 static double Z1; 00097 00099 static double K0; 00100 00102 static int NUM; 00103 00105 static double ALPHA; 00106 static double BETA; 00107 00109 static double R0; 00110 00111 // Maximum radius (kpc) (default 20.0) 00112 static double RMAX; 00113 00115 static double AK; 00116 00118 static double AMIN; // Defaults: 0.2 00119 static double AMAX; // 8.0 00120 static double HMIN; // 50.0 00121 static double HMAX; // 2000.0 00122 00124 static string BASISDATA; // Defaults: "basisdata.2d" 00125 00127 00128 protected: 00129 00131 00132 00133 static double Log10; 00135 static double onedeg; 00137 00139 int M; 00140 00142 int Mcur; 00143 00145 int Ndim; 00146 00148 unsigned int cache_limit; 00149 00151 virtual void manageCache(coordPair&); 00152 00154 00155 00156 static const char* LENGTH_FIELDNAME; 00158 static const char* HEIGHT_FIELDNAME; 00160 static const char* PARAM_NAMES[]; 00162 00164 00165 00166 int nbins; 00168 vector<dvector> lowb; 00170 vector<dvector> highb; 00172 00174 vector<double> flux; 00175 00177 int Nflux; 00178 00180 vector<double> lolim; 00181 00183 vector<double> hilim; 00184 00186 00187 00188 int nparam; 00190 vector<double> w; 00192 vector<dvector> pos; 00194 vector<dvector> sig; 00196 00198 JacoQuad *intgr; 00199 00201 vector<double> wt; 00203 vector< vector<double> > pt; 00205 vector<double> work; 00206 00208 virtual void generate(double L, double B, SampleDistribution *sd=NULL); 00210 virtual void compute_bins(); 00211 00213 bool good_bounds; 00214 00216 void check_bounds(); 00217 00219 mmapGalCM cache; 00221 mmapGalCM::iterator mit; 00223 deque<coordPair> cacheList; 00225 CacheGalaxyModel *current; 00227 int missed; 00228 00230 EvalType type; 00231 00232 // AUTO GENERATED BY ../persistence/autopersist.py 00233 protected: 00234 GalaxyModelND() {} 00235 private: 00236 friend class boost::serialization::access; 00237 template<class Archive> 00238 void serialize(Archive & ar, const unsigned int version) { 00239 this->pre_serialize(ar, version); 00240 try { 00241 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Model); 00242 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00243 } 00244 try { 00245 ar & BOOST_SERIALIZATION_NVP(LMAG); 00246 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00247 } 00248 try { 00249 ar & BOOST_SERIALIZATION_NVP(HMAG); 00250 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00251 } 00252 try { 00253 ar & BOOST_SERIALIZATION_NVP(A1); 00254 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00255 } 00256 try { 00257 ar & BOOST_SERIALIZATION_NVP(Z1); 00258 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00259 } 00260 try { 00261 ar & BOOST_SERIALIZATION_NVP(K0); 00262 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00263 } 00264 try { 00265 ar & BOOST_SERIALIZATION_NVP(NUM); 00266 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00267 } 00268 try { 00269 ar & BOOST_SERIALIZATION_NVP(ALPHA); 00270 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00271 } 00272 try { 00273 ar & BOOST_SERIALIZATION_NVP(BETA); 00274 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00275 } 00276 try { 00277 ar & BOOST_SERIALIZATION_NVP(R0); 00278 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00279 } 00280 try { 00281 ar & BOOST_SERIALIZATION_NVP(RMAX); 00282 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00283 } 00284 try { 00285 ar & BOOST_SERIALIZATION_NVP(AK); 00286 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00287 } 00288 try { 00289 ar & BOOST_SERIALIZATION_NVP(AMIN); 00290 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00291 } 00292 try { 00293 ar & BOOST_SERIALIZATION_NVP(AMAX); 00294 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00295 } 00296 try { 00297 ar & BOOST_SERIALIZATION_NVP(HMIN); 00298 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00299 } 00300 try { 00301 ar & BOOST_SERIALIZATION_NVP(HMAX); 00302 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00303 } 00304 try { 00305 ar & BOOST_SERIALIZATION_NVP(BASISDATA); 00306 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00307 } 00308 try { 00309 ar & BOOST_SERIALIZATION_NVP(Log10); 00310 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00311 } 00312 try { 00313 ar & BOOST_SERIALIZATION_NVP(onedeg); 00314 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00315 } 00316 try { 00317 ar & BOOST_SERIALIZATION_NVP(M); 00318 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00319 } 00320 try { 00321 ar & BOOST_SERIALIZATION_NVP(Mcur); 00322 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00323 } 00324 try { 00325 ar & BOOST_SERIALIZATION_NVP(Ndim); 00326 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00327 } 00328 try { 00329 ar & BOOST_SERIALIZATION_NVP(cache_limit); 00330 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00331 } 00332 try { 00333 ar & BOOST_SERIALIZATION_NVP(nbins); 00334 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00335 } 00336 try { 00337 ar & BOOST_SERIALIZATION_NVP(lowb); 00338 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00339 } 00340 try { 00341 ar & BOOST_SERIALIZATION_NVP(highb); 00342 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00343 } 00344 try { 00345 ar & BOOST_SERIALIZATION_NVP(flux); 00346 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00347 } 00348 try { 00349 ar & BOOST_SERIALIZATION_NVP(Nflux); 00350 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00351 } 00352 try { 00353 ar & BOOST_SERIALIZATION_NVP(lolim); 00354 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00355 } 00356 try { 00357 ar & BOOST_SERIALIZATION_NVP(hilim); 00358 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00359 } 00360 try { 00361 ar & BOOST_SERIALIZATION_NVP(nparam); 00362 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00363 } 00364 try { 00365 ar & BOOST_SERIALIZATION_NVP(w); 00366 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00367 } 00368 try { 00369 ar & BOOST_SERIALIZATION_NVP(pos); 00370 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00371 } 00372 try { 00373 ar & BOOST_SERIALIZATION_NVP(sig); 00374 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00375 } 00376 try { 00377 ar & BOOST_SERIALIZATION_NVP(intgr); 00378 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00379 } 00380 try { 00381 ar & BOOST_SERIALIZATION_NVP(wt); 00382 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00383 } 00384 try { 00385 ar & BOOST_SERIALIZATION_NVP(pt); 00386 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00387 } 00388 try { 00389 ar & BOOST_SERIALIZATION_NVP(work); 00390 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00391 } 00392 try { 00393 ar & BOOST_SERIALIZATION_NVP(good_bounds); 00394 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00395 } 00396 try { 00397 ar & BOOST_SERIALIZATION_NVP(cache); 00398 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00399 } 00400 try { 00401 ar & BOOST_SERIALIZATION_NVP(cacheList); 00402 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00403 } 00404 try { 00405 ar & BOOST_SERIALIZATION_NVP(current); 00406 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00407 } 00408 try { 00409 ar & BOOST_SERIALIZATION_NVP(missed); 00410 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00411 } 00412 try { 00413 ar & BOOST_SERIALIZATION_NVP(type); 00414 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00415 } 00416 this->post_serialize(ar, version); 00417 } 00418 00419 }; 00420 00421 } 00422 00423 BIE_CLASS_TYPE_INFO(BIE::GalaxyModelND) 00424 BIE_CLASS_EXPORT_KEY(BIE::GalaxyModelND) 00425 #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
|