Changeset 3378 in Sophya for trunk/Cosmo/SimLSS
- Timestamp:
- Nov 9, 2007, 7:04:12 PM (18 years ago)
- Location:
- trunk/Cosmo/SimLSS
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/Makefile
r3368 r3378 14 14 MYLIB = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lfftw3_threads -lfftw3 -lm 15 15 16 #-------------------------------------------------------------------------- 17 # ---- Les programmes de simulation 16 18 PROGS = \ 17 19 $(EXE)cmvtuniv $(EXE)cmvtransf $(EXE)cmvtgrowth $(EXE)cmvtstpk \ … … 34 36 LIBR = $(LIB)libcmvsimbao.a 35 37 38 #-------------------------------------------------------------------------- 39 # ---- Les programmes de test 36 40 PROGSTEST = \ 37 41 $(EXE)cmvtluc $(EXE)cmvchkwhu $(EXE)hu_sigma8 … … 41 45 $(OBJ)cmvtluc.o $(OBJ)cmvchkwhu.o $(OBJ)hu_sigma8.o 42 46 47 #-------------------------------------------------------------------------- 48 #---- Les programmes utilisant des librairies non standard SOPHYA 49 SPROGS = \ 50 $(EXE)cmvfitpk 51 52 SPROGSOBJ = \ 53 $(OBJ)cmvfitpk.o 54 43 55 #---- 44 56 all: lib prog … … 49 61 50 62 progtest: $(PROGSTEST) 63 64 sprog: $(SPROGS) 65 66 allprog: all progtest sprog 51 67 52 68 clean: … … 56 72 rm -rf $(OBJ)/CmvBAO_cxxrep/ 57 73 rm -f $(PROGSTEST) $(PROGSTESTOBJ) 74 rm -f $(SPROGS) $(SPROGSOBJ) 58 75 59 76 ############################################################################## … … 215 232 $(OBJ)cmvtluc.o: cmvtluc.cc 216 233 $(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtluc.cc 234 235 ############################################################################## 236 cmvfitpk: $(EXE)cmvfitpk 237 echo $@ " done" 238 $(EXE)cmvfitpk: $(OBJ)cmvfitpk.o $(LIBR) 239 $(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvfitpk.o $(MYLIB) -lMinuit2Base 240 $(OBJ)cmvfitpk.o: cmvfitpk.cc 241 $(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvfitpk.cc -
trunk/Cosmo/SimLSS/cmvfitpk.cc
r3377 r3378 124 124 // --- NTuple et ppf 125 125 POutPersist pos("cmvfitpk.ppf"); 126 const int nvar = 10;127 char *vname[nvar] = {"xi2","a","b","ea","eb","eab" ,"ea1","ea2","eb1","eb2"};126 const int nvar = 6; 127 char *vname[nvar] = {"xi2","a","b","ea","eb","eab"}; 128 128 NTuple nt(nvar,vname); 129 129 double xnt[nvar]; … … 156 156 // --- Initialisation de minuit 157 157 MnUserParameters upar; 158 const int npar = 2; 158 159 upar.Add("A",1.,0.01); 159 160 upar.Add("B",b_ini,b_ini/100.); … … 176 177 MnUserParameterState ustate = min.UserState(); 177 178 178 MnMinos Minos(fcn,min);179 pair<double,double> eminos[2];180 for(int ip=0;ip<2;ip++) {181 eminos[ip].first = eminos[ip].second = 0.;182 if(!ustate.Parameter(ip).IsFixed()) eminos[ip] = Minos(ip);183 }184 185 179 // --- Recuperation des informations et remplissage NTuple 186 180 for(int i=0;i<nvar;i++) xnt[i] = 0.; 187 181 double xi2r = ustate.Fval()/(nbinok-upar.VariableParameters()); 182 double A = ustate.Value((unsigned int)0); 183 double B = ustate.Value((unsigned int)1); 188 184 xnt[0] = xi2r; 189 xnt[1] = ustate.Value((unsigned int)0);190 xnt[2] = ustate.Value((unsigned int)1);185 xnt[1] = A; 186 xnt[2] = B; 191 187 xnt[3] = ustate.Error((unsigned int)0); 192 188 xnt[4] = ustate.Error((unsigned int)1); 193 189 if(ustate.HasCovariance()) xnt[5] = ustate.Covariance()(0,1); 194 xnt[6] = eminos[0].first;195 xnt[7] = eminos[0].second;196 xnt[8] = eminos[1].first;197 xnt[9] = eminos[1].second;198 190 nt.Fill(xnt); 199 191 … … 202 194 HistoErr herrf(herr); herrf.Zero(); 203 195 HistoErr herrd(herr); herrd.Zero(); 204 for(int i= 0;i<herr.NBins();i++) {205 double f = pkz(herr.BinCenter(i));196 for(int i=1;i<herr.NBins();i++) { 197 double f = A*pkz(herr.BinCenter(i))+B; 206 198 herrf.SetBin(i,f,herr.Error(i),1.); 207 199 herrd.SetBin(i,herr(i)-f,herr.Error(i),1.); … … 214 206 215 207 // --- Print de debug 216 if(nfile ==0) {208 if(nfile<3) { 217 209 cout<<"minimum: "<<min<<endl; 218 210 for(int i=0;i<nvar;i++) cout<<"["<<i<<"] = "<<xnt[i]<<endl; 211 212 MnMinos Minos(fcn,min); 213 pair<double,double> eminos[npar]; 214 for(int ip=0;ip<npar;ip++) { 215 eminos[ip].first = eminos[ip].second = 0.; 216 if(!ustate.Parameter(ip).IsFixed()) eminos[ip] = Minos(ip); 217 cout<<"Minos: "<<ip<<" err=["<<eminos[ip].first<<","<<eminos[ip].second<<"]"<<endl; 218 } 219 219 } 220 220 … … 248 248 } 249 249 250 /* 251 openppf cmvfitpk.ppf 252 253 set i 0 254 zone 255 disp h$i "nsta hbincont err" 256 disp hf$i "nsta same red" 257 258 zone 259 disp hd$i "nsta hbincont err red" 260 disp hd$i "nsta same" 261 262 zone 263 n/plot nt.xi2 264 265 zone 266 n/plot nt.a 267 n/plot nt.b 268 n/plot nt.b%a ! ! "crossmarker5" 269 270 n/plot nt.ea 271 n/plot nt.eb 272 n/plot nt.ea%eb ! ! "crossmarker5" 273 274 */ -
trunk/Cosmo/SimLSS/pkspectrum.cc
r3348 r3378 51 51 TransfertEisenstein::TransfertEisenstein(double h100,double OmegaCDM0,double OmegaBaryon0,double tcmb,bool nobaryon,int lp) 52 52 : lp_(lp) 53 , Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h _(h100) , tcmb_(tcmb)53 , Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h100_(h100) , tcmb_(tcmb) 54 54 , nobaryon_(nobaryon) , nooscenv_(0), retpart_(ALL) 55 55 { … … 60 60 TransfertEisenstein::TransfertEisenstein(TransfertEisenstein& tf) 61 61 : lp_(tf.lp_) 62 ,Oc_(tf.Oc_) , Ob_(tf.Ob_) , h _(tf.h_) , tcmb_(tf.tcmb_)62 ,Oc_(tf.Oc_) , Ob_(tf.Ob_) , h100_(tf.h100_) , tcmb_(tf.tcmb_) 63 63 , nobaryon_(tf.nobaryon_) , nooscenv_(tf.nooscenv_), retpart_(tf.retpart_) 64 64 { … … 67 67 } 68 68 69 TransfertEisenstein::~TransfertEisenstein(void) 70 { 71 } 72 69 73 void TransfertEisenstein::zero_(void) 70 74 { … … 78 82 O0_ = Oc_ + Ob_; 79 83 if(nobaryon_) {O0_ = Oc_; Ob_ = 0.;} 80 double H0 = 100. * h _, h2 = h_*h_;81 if(lp_) cout<<"h100="<<h _<<" H0="<<H0<<") Omatter="<<O0_<<" Ocdm="<<Oc_<<" Ob="<<Ob_<<endl;84 double H0 = 100. * h100_, h2 = h100_*h100_; 85 if(lp_) cout<<"h100="<<h100_<<" H0="<<H0<<") Omatter="<<O0_<<" Ocdm="<<Oc_<<" Ob="<<Ob_<<endl; 82 86 83 87 … … 173 177 } 174 178 175 TransfertEisenstein::~TransfertEisenstein(void) 176 { 179 bool TransfertEisenstein::SetParTo(double h100,double OmegaCDM0,double OmegaBaryon0,double tcmb,bool nobaryon) 180 // Changement des valeurs des parametres (suivi de re-init eventuel) 181 { 182 bool haschanged = false; 183 184 if(h100>0.) {h100_ = h100; haschanged = true;} 185 if(OmegaCDM0>0.) {Oc_ = OmegaCDM0; haschanged = true;} 186 if(OmegaBaryon0>0.) {Ob_ = OmegaBaryon0; haschanged = true;} 187 if(tcmb>0.) {tcmb_ = tcmb; haschanged = true;} 188 if(nobaryon!=nobaryon_) {nobaryon_ = nobaryon; haschanged = true;} 189 190 // et on recalcule les initialisations 191 if(haschanged) Init_(); 192 193 return haschanged; 177 194 } 178 195 … … 202 219 } 203 220 221 void TransfertEisenstein::SetPrintLevel(int lp) 222 { 223 lp_ = lp; 224 } 225 226 204 227 double TransfertEisenstein::T0tild(double k,double alphac,double betac) 205 228 { 206 229 // Formule 10 p 608 207 //double q = k*th2p7_*th2p7_/(O0_*h _*h_);230 //double q = k*th2p7_*th2p7_/(O0_*h100_*h100_); 208 231 double q = k/(13.41*keq_); 209 232 // Formule 20 p 610 … … 220 243 // OU Pour function lissee sans oscillation baryon 221 244 if(nobaryon_ || nooscenv_ == 2) { 222 double gamma = O0_*h _;245 double gamma = O0_*h100_; 223 246 // Calcul de Gamma_eff, formule 30 page 612 (pour fct lissee) 224 247 if( nobaryon_==false && nooscenv_ == 2 ) 225 gamma = O0_*h _*(alphag_ + (1.-alphag_)/(1.+pow(0.43*k*sfit_,4.))); // Gamma_eff248 gamma = O0_*h100_*(alphag_ + (1.-alphag_)/(1.+pow(0.43*k*sfit_,4.))); // Gamma_eff 226 249 // Formule 28 page 612 : qui est est equivalent a: 227 // q = k / h _ * th2p7_*th2p7_ / gamma;250 // q = k / h100_ * th2p7_*th2p7_ / gamma; 228 251 // qui est est equivalent a: 229 252 // q = k / (13.41 * keq) pour Ob=0 … … 231 254 // Les resultats sont legerement differents a cause des valeurs approx. 232 255 // des constantes numeriques: on prend comme W.Hu (tf_fit.c) 233 //double q = k / h _ * th2p7_*th2p7_ / gamma; // Mpc^-1234 double q = k/(13.41*keq_) * (O0_*h _/gamma); // Mpc^-1256 //double q = k / h100_ * th2p7_*th2p7_ / gamma; // Mpc^-1 257 double q = k/(13.41*keq_) * (O0_*h100_/gamma); // Mpc^-1 235 258 // Formules 29 page 612 236 259 double l0 = log(2.*M_E + 1.8*q); … … 284 307 285 308 TransfertTabulate::TransfertTabulate(double h100,double OmegaCDM0,double OmegaBaryon0) 286 : Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h _(h100) , kmin_(1.) , kmax_(-1.)309 : Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h100_(h100) , kmin_(1.) , kmax_(-1.) 287 310 , interptyp_(0) 288 311 { … … 290 313 291 314 TransfertTabulate::TransfertTabulate(TransfertTabulate& tf) 292 : Oc_(tf.Oc_) , Ob_(tf.Ob_) , h _(tf.h_) , kmin_(tf.kmin_) , kmax_(tf.kmax_)315 : Oc_(tf.Oc_) , Ob_(tf.Ob_) , h100_(tf.h100_) , kmin_(tf.kmin_) , kmax_(tf.kmax_) 293 316 , interptyp_(tf.interptyp_) , k_(tf.k_) , tf_(tf.tf_) 294 317 { … … 324 347 double k,tc,tb,tf; 325 348 sscanf(line,"%lf %lf %lf",&k,&tc,&tb); 326 k *= h _; // convert h^-1 Mpc -> Mpc349 k *= h100_; // convert h^-1 Mpc -> Mpc 327 350 tf = (Oc_*tc+Ob_*tb)/(Oc_+Ob_); 328 351 if(tf>tmax) tmax = tf; … … 382 405 383 406 return D1z / norm_; 407 } 408 409 bool GrowthFactor::SetParTo(double OmegaMatter0,double OmegaLambda0) 410 { 411 bool haschanged = false; 412 413 if(OmegaMatter0>0.) {O0_ = OmegaMatter0; haschanged = true;} 414 if(fabs(OmegaLambda0+12345.)>1e-6) {Ol_ = OmegaLambda0; haschanged = true;} 415 416 // et on recalcule les initialisations 417 if(haschanged) { 418 Ok_ = 1. - O0_ - Ol_; 419 norm_ = 1.; // puisque (*this)(0.) a besoin de norm_ 420 norm_ = (*this)(0.); 421 } 422 423 return haschanged; 384 424 } 385 425 -
trunk/Cosmo/SimLSS/pkspectrum.h
r3348 r3378 29 29 TransfertEisenstein(TransfertEisenstein& tf); 30 30 virtual ~TransfertEisenstein(void); 31 bool SetParTo(double h100=-1.,double OmegaCDM0=-1.,double OmegaBaryon0=-1.,double tcmb=-1.,bool nobaryon=false); 31 32 virtual double operator() (double k); 32 33 double KPeak(void); 33 34 void SetNoOscEnv(unsigned short nooscenv=0); 34 35 void SetReturnPart(ReturnPart retpart=ALL); 36 void SetPrintLevel(int lp=0); 35 37 protected: 36 38 int lp_; 37 double O0_,Oc_,Ob_,h _,tcmb_;39 double O0_,Oc_,Ob_,h100_,tcmb_; 38 40 double th2p7_; 39 41 double zeq_,keq_,zd_,Req_,Rd_,s_,ksilk_,alphac_,betac_,bnode_,alphab_,betab_; … … 61 63 int ReadCMBFast(string filename); 62 64 protected: 63 double Oc_,Ob_,h _;65 double Oc_,Ob_,h100_; 64 66 double kmin_,kmax_; 65 67 int interptyp_; … … 75 77 virtual ~GrowthFactor(void); 76 78 virtual double operator() (double z); 79 bool SetParTo(double OmegaMatter0=-1.,double OmegaLambda0=-12345.); 77 80 protected: 78 81 double O0_,Ol_,Ok_;
Note:
See TracChangeset
for help on using the changeset viewer.