[3315] | 1 | // Check cmv / Wayne Hu coding of the transfert functions
|
---|
[3317] | 2 | // ATTENTION: ne pas appeler hu_power.c ici car il ecrase les initialisations de hu_tf_fit.c
|
---|
[3315] | 3 | #include "sopnamsp.h"
|
---|
| 4 | #include "machdefs.h"
|
---|
| 5 | #include <iostream>
|
---|
| 6 | #include <stdlib.h>
|
---|
| 7 | #include <stdio.h>
|
---|
| 8 | #include <string.h>
|
---|
| 9 | #include <math.h>
|
---|
| 10 | #include <unistd.h>
|
---|
| 11 | #include "ntuple.h"
|
---|
| 12 |
|
---|
| 13 | #include "constcosmo.h"
|
---|
| 14 | #include "pkspectrum.h"
|
---|
| 15 | #include "hu_tf_fit.h"
|
---|
| 16 |
|
---|
| 17 | int main(int narg,char *arg[])
|
---|
| 18 | {
|
---|
| 19 | double k1 = 1e-6, k2 = 10.; int_4 npt = 10000;
|
---|
| 20 | double h100 = 0.71, Om0 = 0.267804, Ob0 = 0.0444356, tcmb = T_CMB_Par;
|
---|
| 21 |
|
---|
| 22 | cout<<"k1="<<k1<<" k2="<<k2<<" npt="<<npt<<endl;
|
---|
| 23 | cout<<"h100="<<h100<<" Om0="<<Om0<<" Ob0="<<Ob0<<" Tcmb="<<tcmb<<endl;
|
---|
| 24 | cout<<"Om0*h^2="<<Om0*h100*h100<<" Ob0*h^2="<<Ob0*h100*h100<<endl;
|
---|
| 25 | double fbaryon = Ob0/Om0;
|
---|
| 26 | cout<<"fbaryon="<<fbaryon<<endl;
|
---|
| 27 |
|
---|
| 28 | cout<<endl<<"TFset_parameters"<<endl;
|
---|
| 29 | TFset_parameters(Om0*h100*h100,fbaryon,tcmb);
|
---|
| 30 | TFprint_parameters();
|
---|
| 31 | double soundfithu = TFsound_horizon_fit(Om0,fbaryon,h100)/h100;
|
---|
| 32 | cout<<"TFsound_horizon_fit = "<<soundfithu<<" Mpc"<<endl;
|
---|
| 33 |
|
---|
| 34 | cout<<endl<<"TransfertEisenstein with baryon"<<endl;
|
---|
| 35 | TransfertEisenstein Tfull(h100,Om0-Ob0,Ob0,tcmb,false,1);
|
---|
| 36 |
|
---|
| 37 | cout<<endl<<"TransfertEisenstein with baryon without oscillation approx.2"<<endl;
|
---|
| 38 | TransfertEisenstein Tnowig(h100,Om0-Ob0,Ob0,tcmb,false,1);
|
---|
| 39 | Tnowig.SetNoOscEnv(2);
|
---|
| 40 |
|
---|
| 41 | cout<<endl<<"TransfertEisenstein without baryon"<<endl;
|
---|
| 42 | TransfertEisenstein Tnob(h100,Om0,0.,tcmb,true,1);
|
---|
| 43 |
|
---|
| 44 | cout<<endl<<"Compare kpeak"<<endl;
|
---|
| 45 | double kpeak = Tfull.KPeak();
|
---|
| 46 | double kpeakhu = TFk_peak(Om0,fbaryon,h100)*h100;
|
---|
| 47 | cout<<"kpeak = "<<kpeak<<" "<<kpeakhu<<" Mpc^-1 -> diff "<<kpeak-kpeakhu<<endl;
|
---|
| 48 |
|
---|
[3317] | 49 | const int n = 11;
|
---|
[3315] | 50 | char *vname[n] = {"k","tf","tfnw","tfnb","tfc","tfb"
|
---|
[3317] | 51 | ,"hutf","hutfnw","hutfnb","hutfc","hutfb"};
|
---|
[3315] | 52 | NTuple nt(n,vname);
|
---|
| 53 | double xnt[n];
|
---|
| 54 |
|
---|
| 55 | double kmax[5]={0,0,0,0,0};
|
---|
| 56 | double tmax[5]={0.,0.,0.,0.,0.};
|
---|
| 57 | double lnk1 = log10(k1), lnk2=log10(k2), dlnk=(lnk2-lnk1)/npt;
|
---|
| 58 | for(double lnk=lnk1;lnk<lnk2+dlnk/2.;lnk+=dlnk) {
|
---|
| 59 | double k = pow(10.,lnk);
|
---|
| 60 | //if(fabs(lnk-log10(0.0186209))>1e-5) continue;
|
---|
[3348] | 61 | Tfull.SetReturnPart(TransfertEisenstein::ALL); double tf = Tfull(k);
|
---|
[3315] | 62 | double tfnw = Tnowig(k);
|
---|
| 63 | double tfnb = Tnob(k);
|
---|
[3348] | 64 | Tfull.SetReturnPart(TransfertEisenstein::CDM); double tfc = Tfull(k);
|
---|
| 65 | Tfull.SetReturnPart(TransfertEisenstein::BARYON); double tfb = Tfull(k);
|
---|
[3315] | 66 | double hutfc, hutfb;
|
---|
| 67 | double hutf = TFfit_onek(k,&hutfb,&hutfc);
|
---|
| 68 | double hutfnw = TFnowiggles(Om0,fbaryon,h100,tcmb,k/h100);
|
---|
| 69 | double hutfnb = TFzerobaryon(Om0,h100,tcmb,k/h100);
|
---|
| 70 |
|
---|
| 71 |
|
---|
| 72 | if(fabs(tf-hutf)>tmax[0]) {kmax[0]=k; tmax[0]=fabs(tf-hutf);}
|
---|
| 73 | if(fabs(tfnw-hutfnw)>tmax[1]) {kmax[1]=k; tmax[1]=fabs(tfnw-hutfnw);}
|
---|
| 74 | if(fabs(tfnb-hutfnb)>tmax[2]) {kmax[2]=k; tmax[2]=fabs(tfnb-hutfnb);}
|
---|
| 75 | if(fabs(tfc-hutfc)>tmax[3]) {kmax[3]=k; tmax[3]=fabs(tfc-hutfc);}
|
---|
| 76 | if(fabs(tfb-hutfb)>tmax[4]) {kmax[4]=k; tmax[4]=fabs(tfb-hutfb);}
|
---|
| 77 |
|
---|
| 78 | xnt[0]=k;
|
---|
| 79 | xnt[1]=tf; xnt[2]=tfnw; xnt[3]=tfnb; xnt[4]=tfc; xnt[5]=tfb;
|
---|
| 80 | xnt[6]=hutf; xnt[7]=hutfnw; xnt[8]=hutfnb; xnt[9]=hutfc; xnt[10]=hutfb;
|
---|
| 81 | nt.Fill(xnt);
|
---|
| 82 | }
|
---|
| 83 |
|
---|
| 84 | cout<<"Maximum difference for:"<<endl;
|
---|
| 85 | cout<<"tf: "<<tmax[0]<<" for k="<<kmax[0]<<endl;
|
---|
| 86 | cout<<"tfnw: "<<tmax[1]<<" for k="<<kmax[1]<<endl;
|
---|
| 87 | cout<<"tfnb: "<<tmax[2]<<" for k="<<kmax[2]<<endl;
|
---|
| 88 | cout<<"tfc: "<<tmax[3]<<" for k="<<kmax[3]<<endl;
|
---|
| 89 | cout<<"tfb: "<<tmax[4]<<" for k="<<kmax[4]<<endl;
|
---|
| 90 |
|
---|
| 91 | cout<<">>>> Ecriture"<<endl;
|
---|
| 92 | string tag = "cmvchkwhu.ppf";
|
---|
| 93 | POutPersist pos(tag);
|
---|
| 94 | tag = "nt"; pos.PutObject(nt,tag);
|
---|
| 95 |
|
---|
| 96 | return 0;
|
---|
| 97 | }
|
---|
| 98 |
|
---|
| 99 | /*
|
---|
| 100 | openppf cmvchkwhu.ppf
|
---|
| 101 |
|
---|
| 102 | set k k
|
---|
| 103 | set k log10(k)
|
---|
| 104 |
|
---|
| 105 | ######################
|
---|
| 106 | zone 3 1
|
---|
| 107 | n/plot nt.tf%$k ! ! "nsta connectpoints"
|
---|
| 108 | n/plot nt.hutf%$k ! ! "nsta connectpoints red same"
|
---|
| 109 | n/plot nt.tfc%$k ! ! "nsta connectpoints"
|
---|
| 110 | n/plot nt.hutfc%$k ! ! "nsta connectpoints red same"
|
---|
| 111 | n/plot nt.tfb%$k ! ! "nsta connectpoints"
|
---|
| 112 | n/plot nt.hutfb%$k ! ! "nsta connectpoints red same"
|
---|
| 113 | zone 2 1
|
---|
| 114 | n/plot nt.tfnw%$k ! ! "nsta connectpoints"
|
---|
| 115 | n/plot nt.hutfnw%$k ! ! "nsta connectpoints red same"
|
---|
| 116 | n/plot nt.tfnb%$k ! ! "nsta connectpoints"
|
---|
| 117 | n/plot nt.hutfnb%$k ! ! "nsta connectpoints red same"
|
---|
| 118 |
|
---|
| 119 | ######################
|
---|
| 120 | zone 3 1
|
---|
| 121 | n/plot nt.tf-hutf%$k ! ! "nsta connectpoints"
|
---|
| 122 | n/plot nt.tfc-hutfc%$k ! ! "nsta connectpoints"
|
---|
| 123 | n/plot nt.tfb-hutfb%$k ! ! "nsta connectpoints"
|
---|
| 124 | zone 2 1
|
---|
| 125 | n/plot nt.tfnw-hutfnw%$k ! ! "nsta connectpoints"
|
---|
| 126 | n/plot nt.tfnb-hutfnb%$k ! ! "nsta connectpoints"
|
---|
| 127 |
|
---|
| 128 | zone 3 1
|
---|
| 129 | n/plot nt.(tf-hutf)/hutf%$k ! ! "nsta connectpoints"
|
---|
| 130 | n/plot nt.(tfc-hutfc)/hutfc%$k ! ! "nsta connectpoints"
|
---|
| 131 | n/plot nt.(tfb-hutfb)/hutfb%$k ! ! "nsta connectpoints"
|
---|
| 132 | zone 2 1
|
---|
| 133 | n/plot nt.(tfnw-hutfnw)/hutfnw%$k ! ! "nsta connectpoints"
|
---|
| 134 | n/plot nt.(tfnb-hutfnb)/hutfnb%$k ! ! "nsta connectpoints"
|
---|
| 135 |
|
---|
| 136 | ######################
|
---|
| 137 | zone
|
---|
| 138 | n/plot nt.tf%$k ! ! "nsta connectpoints"
|
---|
| 139 | n/plot nt.tfnw%$k ! ! "nsta connectpoints red same"
|
---|
| 140 | n/plot nt.tfnb%$k ! ! "nsta connectpoints blue same"
|
---|
| 141 |
|
---|
| 142 | zone
|
---|
| 143 | n/plot nt.tf/tfnw%$k tfnw>0. ! "nsta connectpoints"
|
---|
| 144 | n/plot nt.hutf/hutfnw%$k hutfnw>0. ! "nsta connectpoints same blue"
|
---|
| 145 | addline -1000 1 1000 1 "red"
|
---|
[3317] | 146 |
|
---|
| 147 | zone
|
---|
| 148 | n/plot nt.tf/tfnb%$k tfnb>0. ! "nsta connectpoints"
|
---|
| 149 | n/plot nt.hutf/hutfnb%$k hutfnb>0. ! "nsta connectpoints same blue"
|
---|
| 150 | addline -1000 1 1000 1 "red"
|
---|
[3315] | 151 | */
|
---|