BIE |
/home/weinberg/src/BIE/PopModel/CMD.h00001 // This may look like C code, but it is really -*- C++ -*- 00002 00003 00004 #ifndef _CMD_h 00005 #define _CMD_h 00006 00007 #include "Serializable.h" 00008 00009 00010 #include <cmath> 00011 00012 #include <iostream> 00013 #include <string> 00014 #include <vector> 00015 #include <algorithm> 00016 #include <map> 00017 using namespace std; 00018 00019 #include "hash_map.h" 00020 00021 #include <ACG.h> 00022 #include <Uniform.h> 00023 00024 #include <Populations.h> 00025 00026 size_t ivecHash(vector<int> P); 00027 00028 00029 HASHMAP_NAMESPACE_BEGIN 00034 template <> 00035 struct hash< vector<int> > 00036 { 00038 size_t operator()(vector<int> s) const 00039 { 00040 return ivecHash(s); 00041 } 00042 }; 00043 HASHMAP_NAMESPACE_END 00044 00045 00047 struct eqivector 00048 { 00050 bool operator()(vector<int> c1, vector<int> c2) const 00051 { 00052 int n1 = c1.size(), n2 = c2.size(); 00053 if (n1 != n2) return false; 00054 for (int i=0; i<n1; i++) if (c1[i]!=c2[i]) return false; 00055 return true; 00056 } 00057 }; 00058 00059 00060 00061 namespace BIE { 00062 00067 //+ CLICLASS CMD 00069 class CMD: public Serializable 00070 { 00071 typedef vector<double> dvector; 00072 typedef vector<int> ivector; 00073 typedef hashers<ivector, float, hash<ivector>, eqivector>::MapType HMap; 00074 00075 private: 00076 00077 int ncolors; 00078 vector<double> colormin; 00079 vector<double> colormax; 00080 vector<double> wcolor; 00081 vector<int> nbins; 00082 vector<int> ncol; 00083 vector<ivector> colors; 00084 double distmod; 00085 00086 vector<double> colr; 00087 vector<int> ii; 00088 vector<int> icol; 00089 vector<int> icolmin; 00090 vector<int> icolmax; 00091 vector<int> icoloff; 00092 vector<double> colwght, off; 00093 vector<dvector> f2; 00094 vector<ivector> i2; 00095 00096 void initialize_realization(); 00097 ACG *gen; 00098 Uniform *uniform; 00099 bool realize_setup; 00100 double realize_norm; 00101 map<double, int, less<double> > realize_data; 00102 00103 string datafile; 00104 00105 void read_data(istream&, double); 00106 HMap Hash; 00107 00108 public: 00109 00111 static bool verbose; 00112 00114 static int seed; 00115 00116 00117 //+ CLICONSTR string 00121 CMD(string directory, double minval=1.0e-10); 00122 00124 ~CMD(); 00125 00128 00129 double GetValue(vector<double>& flux); 00130 00132 double GetValue(vector<int>& indx); 00133 00135 double Interpolate(vector<double>& flux, double distmod); 00136 00138 double Bin(vector<double>& fmin, vector<double>& fmax, double distmod); 00140 00142 void SetParameters(void) {}; 00143 00146 00147 vector<int> get_color(int n) { 00148 int nn = min<int>(max<int>(0, n), ncolors-1); 00149 return colors[nn]; 00150 } 00152 vector<ivector> get_colors(void) { return colors; } 00153 00155 int get_ncolors(void) { return ncolors; } 00156 00158 vector<double> MinMag() { return colormin; } 00159 00161 vector<double> MaxMag() { return colormax; } 00162 00164 vector<double> ColorDelta() { return wcolor; } 00165 00167 vector<int> NumBins() { return nbins; } 00168 00170 double DistMod() { return distmod; } 00171 00173 00176 void VerifyDouble(double distmod); 00177 void VerifyInt(); 00179 00181 vector<double> genPoint(); 00182 00184 void HashStat(); 00185 00186 // AUTO GENERATED BY ../persistence/autopersist.py 00187 protected: 00188 CMD() {} 00189 private: 00190 friend class boost::serialization::access; 00191 template<class Archive> 00192 void serialize(Archive & ar, const unsigned int version) { 00193 this->pre_serialize(ar, version); 00194 try { 00195 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00196 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00197 } 00198 try { 00199 ar & BOOST_SERIALIZATION_NVP(ncolors); 00200 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00201 } 00202 try { 00203 ar & BOOST_SERIALIZATION_NVP(colormin); 00204 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00205 } 00206 try { 00207 ar & BOOST_SERIALIZATION_NVP(colormax); 00208 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00209 } 00210 try { 00211 ar & BOOST_SERIALIZATION_NVP(wcolor); 00212 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00213 } 00214 try { 00215 ar & BOOST_SERIALIZATION_NVP(nbins); 00216 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00217 } 00218 try { 00219 ar & BOOST_SERIALIZATION_NVP(ncol); 00220 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00221 } 00222 try { 00223 ar & BOOST_SERIALIZATION_NVP(colors); 00224 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00225 } 00226 try { 00227 ar & BOOST_SERIALIZATION_NVP(distmod); 00228 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00229 } 00230 try { 00231 ar & BOOST_SERIALIZATION_NVP(colr); 00232 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00233 } 00234 try { 00235 ar & BOOST_SERIALIZATION_NVP(ii); 00236 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00237 } 00238 try { 00239 ar & BOOST_SERIALIZATION_NVP(icol); 00240 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00241 } 00242 try { 00243 ar & BOOST_SERIALIZATION_NVP(icolmin); 00244 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00245 } 00246 try { 00247 ar & BOOST_SERIALIZATION_NVP(icolmax); 00248 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00249 } 00250 try { 00251 ar & BOOST_SERIALIZATION_NVP(icoloff); 00252 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00253 } 00254 try { 00255 ar & BOOST_SERIALIZATION_NVP(colwght); 00256 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00257 } 00258 try { 00259 ar & BOOST_SERIALIZATION_NVP(off); 00260 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00261 } 00262 try { 00263 ar & BOOST_SERIALIZATION_NVP(f2); 00264 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00265 } 00266 try { 00267 ar & BOOST_SERIALIZATION_NVP(i2); 00268 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00269 } 00270 try { 00271 ar & BOOST_SERIALIZATION_NVP(gen); 00272 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00273 } 00274 try { 00275 ar & BOOST_SERIALIZATION_NVP(uniform); 00276 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00277 } 00278 try { 00279 ar & BOOST_SERIALIZATION_NVP(realize_setup); 00280 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00281 } 00282 try { 00283 ar & BOOST_SERIALIZATION_NVP(realize_norm); 00284 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00285 } 00286 try { 00287 ar & BOOST_SERIALIZATION_NVP(realize_data); 00288 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00289 } 00290 try { 00291 ar & BOOST_SERIALIZATION_NVP(datafile); 00292 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00293 } 00294 try { 00295 ar & BOOST_SERIALIZATION_NVP(Hash); 00296 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00297 } 00298 try { 00299 ar & BOOST_SERIALIZATION_NVP(verbose); 00300 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00301 } 00302 try { 00303 ar & BOOST_SERIALIZATION_NVP(seed); 00304 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00305 } 00306 this->post_serialize(ar, version); 00307 } 00308 00309 }; 00310 } 00311 00312 BIE_CLASS_TYPE_INFO(BIE::CMD) 00313 BIE_CLASS_EXPORT_KEY(BIE::CMD) 00314 #endif 00315 Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:11 2010 by
|