BIE |
/home/weinberg/src/BIE/include/SimpleGalaxyModel.h00001 // This is really -*- C++ -*- 00002 00003 00004 00005 #ifndef SimpleGalaxyModel_h 00006 #define SimpleGalaxyModel_h 00007 00008 #include "hash_map.h" 00009 #include "Model.h" 00010 #include "StdCandle2.h" 00011 #include "coord.h" 00012 00013 #include "Serializable.h" 00014 00015 00016 namespace BIE { 00017 00019 class CachedModel: public Serializable 00020 { 00021 public: 00023 double L; 00025 double B; 00027 StdCandle * std; 00028 00030 CachedModel(double ll, double bb, StdCandle *p) 00031 { 00032 L = ll; 00033 B = bb; 00034 std = p; 00035 } 00036 00038 ~CachedModel() 00039 { 00040 delete std; 00041 } 00042 00043 // AUTO GENERATED BY ../persistence/autopersist.py 00044 protected: 00045 CachedModel() {} 00046 private: 00047 friend class boost::serialization::access; 00048 template<class Archive> 00049 void serialize(Archive & ar, const unsigned int version) { 00050 this->pre_serialize(ar, version); 00051 try { 00052 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00053 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00054 } 00055 try { 00056 ar & BOOST_SERIALIZATION_NVP(L); 00057 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00058 } 00059 try { 00060 ar & BOOST_SERIALIZATION_NVP(B); 00061 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00062 } 00063 try { 00064 ar & BOOST_SERIALIZATION_NVP(std); 00065 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00066 } 00067 this->post_serialize(ar, version); 00068 } 00069 00070 }; 00071 00072 typedef hashers<coordPair, CachedModel*, hash<coordPair>, eqcoord>::MapType mmapCM; 00073 00074 //+ CLICLASS SimpleGalaxyModel SUPER Model 00079 class SimpleGalaxyModel : public Model 00080 { 00081 public: 00082 00083 //+ CLICONSTR int int bool 00085 SimpleGalaxyModel(int ndim, int mdim, bool cmap=false); 00086 00088 ~SimpleGalaxyModel(); 00089 00091 00092 00093 void Initialize(State&); 00095 void Initialize(vector<double>& w, vector< vector<double> >& p); 00097 00099 void ResetCache() {} 00100 00102 double NormEval(double x, double y, SampleDistribution *d); 00103 00105 double NormEval(double x, double y); 00106 00108 double NormEvalMeasure(double x, double B) { 00109 if (mapped) B = asin(pow(fabs(B), 1.0/(1.0 - MU))) * copysign(1.0, B); 00110 return cos(B); 00111 } 00112 00114 vector<double> EvaluateBinned(double x, double y, BinnedDistribution *d); 00115 00117 vector<double> EvaluatePoint(double x, double y, PointDistribution *d); 00118 00120 string ParameterDescription(int i); 00121 00123 int DataDimension() { return 1; } 00124 00125 //+ CLIMETHOD void SetStdCandle int int 00127 void SetStdCandle(int num, int ntab) 00128 { StdCandle::NUM = num; StdCandle::NTAB = ntab; } 00129 00132 00134 static double A1; 00135 00137 static double Z1; 00138 00140 static double K0; 00141 00143 static double SIGK; 00144 00146 static double KLOW; 00147 00149 static double KLIM; 00150 00152 static double MU; 00153 00155 00156 protected: 00157 00158 private: 00159 00161 bool mapped; 00162 00164 int M; 00165 00167 int Ndim; 00168 00169 // Constants related to record type. 00170 static const char* LENGTH_FIELDNAME; 00171 static const char* HEIGHT_FIELDNAME; 00172 static const char* PARAM_NAMES[]; 00173 00174 StdCandle std0; 00175 00176 mmapCM cache; 00177 mmapCM::iterator mit; 00178 CachedModel* current; 00179 00180 vector< vector<double> > pt; 00181 vector<double> wt; 00182 vector<double> norm, normoff; 00183 00184 // AUTO GENERATED BY ../persistence/autopersist.py 00185 protected: 00186 SimpleGalaxyModel() {} 00187 private: 00188 friend class boost::serialization::access; 00189 template<class Archive> 00190 void serialize(Archive & ar, const unsigned int version) { 00191 this->pre_serialize(ar, version); 00192 try { 00193 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Model); 00194 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00195 } 00196 try { 00197 ar & BOOST_SERIALIZATION_NVP(A1); 00198 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00199 } 00200 try { 00201 ar & BOOST_SERIALIZATION_NVP(Z1); 00202 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00203 } 00204 try { 00205 ar & BOOST_SERIALIZATION_NVP(K0); 00206 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00207 } 00208 try { 00209 ar & BOOST_SERIALIZATION_NVP(SIGK); 00210 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00211 } 00212 try { 00213 ar & BOOST_SERIALIZATION_NVP(KLOW); 00214 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00215 } 00216 try { 00217 ar & BOOST_SERIALIZATION_NVP(KLIM); 00218 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00219 } 00220 try { 00221 ar & BOOST_SERIALIZATION_NVP(MU); 00222 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00223 } 00224 try { 00225 ar & BOOST_SERIALIZATION_NVP(mapped); 00226 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00227 } 00228 try { 00229 ar & BOOST_SERIALIZATION_NVP(M); 00230 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00231 } 00232 try { 00233 ar & BOOST_SERIALIZATION_NVP(Ndim); 00234 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00235 } 00236 try { 00237 ar & BOOST_SERIALIZATION_NVP(std0); 00238 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00239 } 00240 try { 00241 ar & BOOST_SERIALIZATION_NVP(cache); 00242 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00243 } 00244 try { 00245 ar & BOOST_SERIALIZATION_NVP(current); 00246 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00247 } 00248 try { 00249 ar & BOOST_SERIALIZATION_NVP(pt); 00250 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00251 } 00252 try { 00253 ar & BOOST_SERIALIZATION_NVP(wt); 00254 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00255 } 00256 try { 00257 ar & BOOST_SERIALIZATION_NVP(norm); 00258 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00259 } 00260 try { 00261 ar & BOOST_SERIALIZATION_NVP(normoff); 00262 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00263 } 00264 this->post_serialize(ar, version); 00265 } 00266 00267 }; 00268 00269 } // namespace BIE 00270 BIE_CLASS_TYPE_INFO(BIE::CachedModel) 00271 BIE_CLASS_TYPE_INFO(BIE::SimpleGalaxyModel) 00272 BIE_CLASS_EXPORT_KEY(BIE::CachedModel) 00273 BIE_CLASS_EXPORT_KEY(BIE::SimpleGalaxyModel) 00274 #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
|