BIE |
/home/weinberg/src/BIE/PopModel/Populations.h00001 // This may look like C code, but it is really -*- C++ -*- 00002 00003 00004 00005 #ifndef Populations_h 00006 #define Populations_h 00007 00008 #include "Serializable.h" 00009 00010 00011 #include <cmath> 00012 #include <iostream> 00013 #include <string> 00014 #include <vector> 00015 #include <algorithm> 00016 using namespace std; 00017 00018 #include "hash_map.h" 00019 00020 #include <PopKey.h> 00021 00022 namespace BIE { 00023 00027 class Populations: public Serializable 00028 { 00029 typedef vector<double> dvector; 00030 typedef vector<int> ivector; 00031 typedef hashers<PopKey, double, hash<PopKey>, eqpopkey>::MapType HMapKey; 00032 00033 private: 00034 int nmetal; 00035 vector<double> metal; 00036 vector<string> smetal; 00037 00038 int nages; 00039 vector<double> ages, age_boundary; 00040 vector<string> sages; 00041 00042 int nflux0, nflux, nMarge; 00043 vector<double> minmag; 00044 vector<double> maxmag; 00045 vector<double> wmag; 00046 vector<int> nmag; 00047 vector<bool> use_flux; 00048 00049 vector<double> flux; 00050 vector<int> ii; 00051 vector<int> iflx; 00052 vector<int> iflxmin; 00053 vector<int> iflxmax; 00054 vector<int> iflxoff; 00055 vector<double> flxwght; 00056 vector<dvector> f2; 00057 vector<ivector> i2; 00058 00059 string datadir; 00060 00061 PopKey key; 00062 00063 void read_data(void); 00064 HMapKey *Hash; 00065 00066 public: 00067 00069 Populations(string &directory, vector<int>* Marginalize=NULL); 00070 00072 ~Populations(); 00073 00076 00077 double GetValue(vector<double>& flux, double age, double metal); 00079 double GetValue(vector<int>& indx, int age, int metal); 00081 double Interpolate(vector<double>& flux, double age, double metal); 00083 double Bin(vector<double>& fmin, vector<double>& fmax, 00084 double age, double metal); 00086 00088 void SetParameters(void) {}; 00089 00092 00093 vector<double> Metal() { return metal; } 00095 vector<double> Ages() { return ages; } 00097 vector<double> AgeBoundaries() { return age_boundary; } 00099 vector<double> MinMag() { return minmag; } 00101 vector<double> MaxMag() { return maxmag; } 00103 vector<double> MagDelta() { return wmag; } 00105 vector<int> NumMag() { return nmag; } 00107 00110 00111 void VerifyDouble(); 00113 void VerifyInt(); 00115 00116 // AUTO GENERATED BY ../persistence/autopersist.py 00117 protected: 00118 Populations() {} 00119 private: 00120 friend class boost::serialization::access; 00121 template<class Archive> 00122 void serialize(Archive & ar, const unsigned int version) { 00123 this->pre_serialize(ar, version); 00124 try { 00125 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00126 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00127 } 00128 try { 00129 ar & BOOST_SERIALIZATION_NVP(nmetal); 00130 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00131 } 00132 try { 00133 ar & BOOST_SERIALIZATION_NVP(metal); 00134 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00135 } 00136 try { 00137 ar & BOOST_SERIALIZATION_NVP(smetal); 00138 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00139 } 00140 try { 00141 ar & BOOST_SERIALIZATION_NVP(nages); 00142 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00143 } 00144 try { 00145 ar & BOOST_SERIALIZATION_NVP(ages); 00146 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00147 } 00148 try { 00149 ar & BOOST_SERIALIZATION_NVP(age_boundary); 00150 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00151 } 00152 try { 00153 ar & BOOST_SERIALIZATION_NVP(sages); 00154 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00155 } 00156 try { 00157 ar & BOOST_SERIALIZATION_NVP(nflux0); 00158 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00159 } 00160 try { 00161 ar & BOOST_SERIALIZATION_NVP(nflux); 00162 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00163 } 00164 try { 00165 ar & BOOST_SERIALIZATION_NVP(nMarge); 00166 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00167 } 00168 try { 00169 ar & BOOST_SERIALIZATION_NVP(minmag); 00170 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00171 } 00172 try { 00173 ar & BOOST_SERIALIZATION_NVP(maxmag); 00174 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00175 } 00176 try { 00177 ar & BOOST_SERIALIZATION_NVP(wmag); 00178 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00179 } 00180 try { 00181 ar & BOOST_SERIALIZATION_NVP(nmag); 00182 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00183 } 00184 try { 00185 ar & BOOST_SERIALIZATION_NVP(use_flux); 00186 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00187 } 00188 try { 00189 ar & BOOST_SERIALIZATION_NVP(flux); 00190 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00191 } 00192 try { 00193 ar & BOOST_SERIALIZATION_NVP(ii); 00194 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00195 } 00196 try { 00197 ar & BOOST_SERIALIZATION_NVP(iflx); 00198 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00199 } 00200 try { 00201 ar & BOOST_SERIALIZATION_NVP(iflxmin); 00202 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00203 } 00204 try { 00205 ar & BOOST_SERIALIZATION_NVP(iflxmax); 00206 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00207 } 00208 try { 00209 ar & BOOST_SERIALIZATION_NVP(iflxoff); 00210 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00211 } 00212 try { 00213 ar & BOOST_SERIALIZATION_NVP(flxwght); 00214 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00215 } 00216 try { 00217 ar & BOOST_SERIALIZATION_NVP(f2); 00218 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00219 } 00220 try { 00221 ar & BOOST_SERIALIZATION_NVP(i2); 00222 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00223 } 00224 try { 00225 ar & BOOST_SERIALIZATION_NVP(datadir); 00226 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00227 } 00228 try { 00229 ar & BOOST_SERIALIZATION_NVP(key); 00230 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00231 } 00232 try { 00233 ar & BOOST_SERIALIZATION_NVP(Hash); 00234 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00235 } 00236 this->post_serialize(ar, version); 00237 } 00238 00239 00240 }; 00241 } 00242 00243 BIE_CLASS_TYPE_INFO(BIE::Populations) 00244 BIE_CLASS_EXPORT_KEY(BIE::Populations) 00245 #endif 00246 Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:11 2010 by
|