Changeset 3378 in Sophya for trunk/Cosmo


Ignore:
Timestamp:
Nov 9, 2007, 7:04:12 PM (18 years ago)
Author:
cmv
Message:

modif sur remplissage NTuple/Minos, possibilite de changer les parametres O0,Om,Ol etc... , cmv 09/11/2007

Location:
trunk/Cosmo/SimLSS
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/SimLSS/Makefile

    r3368 r3378  
    1414MYLIB = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lfftw3_threads -lfftw3 -lm
    1515
     16#--------------------------------------------------------------------------
     17# ---- Les programmes de simulation
    1618PROGS = \
    1719       $(EXE)cmvtuniv $(EXE)cmvtransf $(EXE)cmvtgrowth $(EXE)cmvtstpk \
     
    3436LIBR = $(LIB)libcmvsimbao.a
    3537
     38#--------------------------------------------------------------------------
     39# ---- Les programmes de test
    3640PROGSTEST = \
    3741        $(EXE)cmvtluc $(EXE)cmvchkwhu $(EXE)hu_sigma8
     
    4145        $(OBJ)cmvtluc.o $(OBJ)cmvchkwhu.o $(OBJ)hu_sigma8.o
    4246
     47#--------------------------------------------------------------------------
     48#---- Les programmes utilisant des librairies non standard SOPHYA
     49SPROGS = \
     50       $(EXE)cmvfitpk
     51
     52SPROGSOBJ = \
     53       $(OBJ)cmvfitpk.o
     54
    4355#----
    4456all: lib prog
     
    4961
    5062progtest: $(PROGSTEST)
     63
     64sprog: $(SPROGS)
     65
     66allprog: all progtest sprog
    5167
    5268clean:
     
    5672        rm -rf $(OBJ)/CmvBAO_cxxrep/
    5773        rm -f $(PROGSTEST) $(PROGSTESTOBJ)
     74        rm -f $(SPROGS) $(SPROGSOBJ)
    5875
    5976##############################################################################
     
    215232$(OBJ)cmvtluc.o: cmvtluc.cc
    216233        $(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtluc.cc
     234
     235##############################################################################
     236cmvfitpk: $(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  
    124124 // --- NTuple et ppf
    125125 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"};
    128128 NTuple nt(nvar,vname);
    129129 double xnt[nvar];
     
    156156   // --- Initialisation de minuit
    157157    MnUserParameters upar;
     158    const int npar = 2;
    158159    upar.Add("A",1.,0.01);
    159160    upar.Add("B",b_ini,b_ini/100.);
     
    176177   MnUserParameterState ustate = min.UserState();
    177178
    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 
    185179   // --- Recuperation des informations et remplissage NTuple
    186180   for(int i=0;i<nvar;i++) xnt[i] = 0.;
    187181   double xi2r = ustate.Fval()/(nbinok-upar.VariableParameters());
     182   double A = ustate.Value((unsigned int)0);
     183   double B = ustate.Value((unsigned int)1);
    188184   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;
    191187   xnt[3] = ustate.Error((unsigned int)0);
    192188   xnt[4] = ustate.Error((unsigned int)1);
    193189   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;
    198190   nt.Fill(xnt);
    199191
     
    202194     HistoErr herrf(herr); herrf.Zero();
    203195     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;
    206198       herrf.SetBin(i,f,herr.Error(i),1.);
    207199       herrd.SetBin(i,herr(i)-f,herr.Error(i),1.);
     
    214206
    215207   // --- Print de debug
    216    if(nfile==0) {
     208   if(nfile<3) {
    217209     cout<<"minimum: "<<min<<endl;
    218210     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     }
    219219   }
    220220
     
    248248}
    249249
     250/*
     251openppf cmvfitpk.ppf
     252
     253set i 0
     254zone
     255disp h$i "nsta hbincont err"
     256disp hf$i "nsta same red"
     257
     258zone
     259disp hd$i "nsta hbincont err red"
     260disp hd$i "nsta same"
     261
     262zone
     263n/plot nt.xi2
     264
     265zone
     266n/plot nt.a
     267n/plot nt.b
     268n/plot nt.b%a ! ! "crossmarker5"
     269
     270n/plot nt.ea
     271n/plot nt.eb
     272n/plot nt.ea%eb ! ! "crossmarker5"
     273
     274 */
  • trunk/Cosmo/SimLSS/pkspectrum.cc

    r3348 r3378  
    5151TransfertEisenstein::TransfertEisenstein(double h100,double OmegaCDM0,double OmegaBaryon0,double tcmb,bool nobaryon,int lp)
    5252  : lp_(lp)
    53   , Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h_(h100) , tcmb_(tcmb)
     53  , Oc_(OmegaCDM0) , Ob_(OmegaBaryon0) , h100_(h100) , tcmb_(tcmb)
    5454  , nobaryon_(nobaryon) , nooscenv_(0), retpart_(ALL)
    5555{
     
    6060TransfertEisenstein::TransfertEisenstein(TransfertEisenstein& tf)
    6161  : 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_)
    6363  , nobaryon_(tf.nobaryon_) , nooscenv_(tf.nooscenv_), retpart_(tf.retpart_)
    6464{
     
    6767}
    6868
     69TransfertEisenstein::~TransfertEisenstein(void)
     70{
     71}
     72
    6973void TransfertEisenstein::zero_(void)
    7074{
     
    7882  O0_ = Oc_ + Ob_;
    7983  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;
    8286
    8387
     
    173177}
    174178
    175 TransfertEisenstein::~TransfertEisenstein(void)
    176 {
     179bool 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;
    177194}
    178195
     
    202219}
    203220
     221void TransfertEisenstein::SetPrintLevel(int lp)
     222{
     223 lp_ = lp;
     224}
     225
     226
    204227double TransfertEisenstein::T0tild(double k,double alphac,double betac)
    205228{
    206229  // Formule 10 p 608
    207   //double q = k*th2p7_*th2p7_/(O0_*h_*h_);
     230  //double q = k*th2p7_*th2p7_/(O0_*h100_*h100_);
    208231  double q = k/(13.41*keq_);
    209232  // Formule 20 p 610
     
    220243  //  OU Pour function lissee sans oscillation baryon
    221244  if(nobaryon_  || nooscenv_ == 2) {
    222     double gamma = O0_*h_;
     245    double gamma = O0_*h100_;
    223246    // Calcul de Gamma_eff, formule 30 page 612 (pour fct lissee)
    224247    if( nobaryon_==false && nooscenv_ == 2 )
    225       gamma = O0_*h_*(alphag_ + (1.-alphag_)/(1.+pow(0.43*k*sfit_,4.))); // Gamma_eff
     248      gamma = O0_*h100_*(alphag_ + (1.-alphag_)/(1.+pow(0.43*k*sfit_,4.))); // Gamma_eff
    226249    // Formule 28 page 612 : qui est est equivalent a:
    227     //    q = k / h_ * th2p7_*th2p7_ / gamma;
     250    //    q = k / h100_ * th2p7_*th2p7_ / gamma;
    228251    // qui est est equivalent a:
    229252    //    q = k / (13.41 * keq)                   pour Ob=0
     
    231254    // Les resultats sont legerement differents a cause des valeurs approx.
    232255    // des constantes numeriques: on prend comme W.Hu (tf_fit.c)
    233     //double q = k / h_ * th2p7_*th2p7_ / gamma;  // Mpc^-1
    234     double q = k/(13.41*keq_) * (O0_*h_/gamma);  // Mpc^-1
     256    //double q = k / h100_ * th2p7_*th2p7_ / gamma;  // Mpc^-1
     257    double q = k/(13.41*keq_) * (O0_*h100_/gamma);  // Mpc^-1
    235258    // Formules 29 page 612
    236259    double l0 = log(2.*M_E + 1.8*q);
     
    284307
    285308TransfertTabulate::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.)
    287310, interptyp_(0)
    288311{
     
    290313
    291314TransfertTabulate::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_)
    293316, interptyp_(tf.interptyp_) , k_(tf.k_) , tf_(tf.tf_)
    294317{
     
    324347   double k,tc,tb,tf;
    325348   sscanf(line,"%lf %lf %lf",&k,&tc,&tb);
    326    k *= h_;     // convert h^-1 Mpc  ->  Mpc
     349   k *= h100_;     // convert h^-1 Mpc  ->  Mpc
    327350   tf = (Oc_*tc+Ob_*tb)/(Oc_+Ob_);
    328351   if(tf>tmax) tmax = tf;
     
    382405
    383406 return D1z / norm_;
     407}
     408
     409bool 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;
    384424}
    385425
  • trunk/Cosmo/SimLSS/pkspectrum.h

    r3348 r3378  
    2929  TransfertEisenstein(TransfertEisenstein& tf);
    3030  virtual ~TransfertEisenstein(void);
     31  bool SetParTo(double h100=-1.,double OmegaCDM0=-1.,double OmegaBaryon0=-1.,double tcmb=-1.,bool nobaryon=false);
    3132  virtual double operator() (double k);
    3233  double KPeak(void);
    3334  void SetNoOscEnv(unsigned short nooscenv=0);
    3435  void SetReturnPart(ReturnPart retpart=ALL);
     36  void SetPrintLevel(int lp=0);
    3537protected:
    3638  int lp_;
    37   double O0_,Oc_,Ob_,h_,tcmb_;
     39  double O0_,Oc_,Ob_,h100_,tcmb_;
    3840  double th2p7_;
    3941  double zeq_,keq_,zd_,Req_,Rd_,s_,ksilk_,alphac_,betac_,bnode_,alphab_,betab_;
     
    6163  int ReadCMBFast(string filename);
    6264protected:
    63   double Oc_,Ob_,h_;
     65  double Oc_,Ob_,h100_;
    6466  double kmin_,kmax_;
    6567  int interptyp_;
     
    7577  virtual ~GrowthFactor(void);
    7678  virtual double operator() (double z);
     79  bool SetParTo(double OmegaMatter0=-1.,double OmegaLambda0=-12345.);
    7780protected:
    7881  double O0_,Ol_,Ok_;
Note: See TracChangeset for help on using the changeset viewer.