Changeset 3141 in Sophya for trunk/Cosmo/SimLSS/cmvobserv3d.cc


Ignore:
Timestamp:
Jan 17, 2007, 6:44:04 PM (19 years ago)
Author:
cmv
Message:

chgt HProf->HistoErr + spectre 2D cmv 17/01/2007

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/SimLSS/cmvobserv3d.cc

    r3134 r3141  
    1010#include "ntuple.h"
    1111#include "matharr.h"
    12 #include "srandgen.h"
    13 #include "perandom.h"
    14 #include "fabtwriter.h"
    15 
    16 #include "arrctcast.h"
    1712
    1813#include "constcosmo.h"
     
    208203 pkz.SetZ(zref);
    209204 TArray< complex<r_8> > pkgen;
    210  GeneFluct3D fluct3d(pkgen,pkz);
     205 GeneFluct3D fluct3d(pkgen);
    211206 fluct3d.SetNThread(nthread);
    212207 fluct3d.SetSize(nx,ny,nz,dx,dy,dz);
     208 TArray<r_8>& rgen = fluct3d.GetRealArray();
    213209 fluct3d.Print();
     210
     211 double dkmin = fluct3d.GetKincMin();
    214212 double knyqmax = fluct3d.GetKmax();
    215  double dkmin = fluct3d.GetKinc()[0];
     213 long nherr = long(knyqmax/dkmin+0.5);
     214 cout<<"For HistoErr: d="<<dkmin<<" max="<<knyqmax<<" n="<<nherr<<endl;
     215
     216 double dktmin = fluct3d.GetKTincMin();
     217 double ktnyqmax = fluct3d.GetKTmax();
     218 long nherrt = long(ktnyqmax/dktmin+0.5);
     219 double dkzmin = fluct3d.GetKinc()[2];
     220 double kznyqmax = fluct3d.GetKnyq()[2];
     221 long nherrz = long(kznyqmax/dkzmin+0.5);
     222 cout<<"For Histo2DErr: d="<<dktmin<<","<<dkzmin
     223     <<" max="<<ktnyqmax<<","<<kznyqmax<<" n="<<nherrt<<","<<nherrz<<endl;
    216224
    217225 cout<<"\n--- Computing spectra variance up to Kmax at z="<<pkz.GetZ()<<endl;
     
    219227 // sphere: Vs = 4Pi/3 k^3 , cube inscrit (cote k*sqrt(2)): Vc = (k*sqrt(2))^3
    220228 // Vc/Vs = 0.675   ->  keff = kmax * (0.675)^(1/3) = kmax * 0.877
    221  knyqmax *= 0.877;
    222  ldlkint = (log10(knyqmax)-log10(k1int))/npt;
     229 double knyqmax_mod = 0.877*knyqmax;
     230 ldlkint = (log10(knyqmax_mod)-log10(k1int))/npt;
    223231 varpk_int.SetInteg(0.01,ldlkint,-1.,4);
    224  double sr2int_kmax = varpk_int.Variance(R,k1int,knyqmax);
    225  cout<<"varpk_int(<"<<knyqmax<<")="<<sr2int_kmax<<"  ->  sigma="<<sqrt(sr2int_kmax)<<endl;
     232 double sr2int_kmax = varpk_int.Variance(R,k1int,knyqmax_mod);
     233 cout<<"varpk_int(<"<<knyqmax_mod<<")="<<sr2int_kmax<<"  ->  sigma="<<sqrt(sr2int_kmax)<<endl;
    226234
    227235 cout<<"\n--- Computing a realization in Fourier space"<<endl;
    228  if(computefourier0) fluct3d.ComputeFourier0();
    229    else              fluct3d.ComputeFourier();
    230 
    231  cout<<"\n--- Checking realization spectra"<<endl;
    232  long nhprof = long(fluct3d.GetKmax()/dkmin+0.5);
    233  HProf hpkgen(0.,fluct3d.GetKmax(),nhprof);
    234  hpkgen.ReCenterBin();
    235  fluct3d.ComputeSpectrum(hpkgen);
    236  {
    237  tagobs = "hpkgen"; posobs.PutObject(hpkgen,tagobs);
     236 if(computefourier0) fluct3d.ComputeFourier0(pkz);
     237   else              fluct3d.ComputeFourier(pkz);
     238
     239 if(1) {
     240   cout<<"\n--- Checking realization spectra"<<endl;
     241   HistoErr hpkgen(0.,knyqmax,nherr);
     242   hpkgen.ReCenterBin(); hpkgen.Zero();
     243   hpkgen.Show();
     244   fluct3d.ComputeSpectrum(hpkgen);
     245   {
     246   tagobs = "hpkgen"; posobs.PutObject(hpkgen,tagobs);
     247   }
     248 }
     249
     250 if(1) {
     251   cout<<"\n--- Checking realization 2D spectra"<<endl;
     252   Histo2DErr hpkgen2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz);
     253   hpkgen2.ReCenterBin(); hpkgen2.Zero();
     254   hpkgen2.Show();
     255   fluct3d.ComputeSpectrum2D(hpkgen2);
     256   {
     257   tagobs = "hpkgen2"; posobs.PutObject(hpkgen2,tagobs);
     258   }
    238259 }
    239260
     
    241262   cout<<"\n--- Computing convolution by pixel shape"<<endl;
    242263   fluct3d.FilterByPixel();
    243 
     264 }
     265
     266 if(1) fluct3d.WriteFits("!cmvobserv3d_k.fits");
     267 if(1) fluct3d.WritePPF("cmvobserv3d_k.ppf",false);
     268
     269 if(1) {
    244270   cout<<"\n--- Checking realization spectra after pixel shape convol."<<endl;
    245    HProf hpkgenf(hpkgen); hpkgenf.Zero();
     271   HistoErr hpkgenf(0.,knyqmax,nherr);
     272   hpkgenf.ReCenterBin(); hpkgenf.Zero();
     273   hpkgenf.Show();
    246274   fluct3d.ComputeSpectrum(hpkgenf);
    247275   {
     
    250278 }
    251279
    252  if(0) {
    253    cout<<"\n--- Writing cmvobserv3dk.ppf"<<endl;
    254    string tag = "cmvobserv3dk.ppf";
    255    POutPersist pos(tag);
    256    tag = "pkgen"; pos.PutObject(pkgen,tag);
     280 if(1) {
     281   cout<<"\n--- Checking realization 2D spectra after pixel shape convol."<<endl;
     282   Histo2DErr hpkgenf2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz);
     283   hpkgenf2.ReCenterBin(); hpkgenf2.Zero();
     284   hpkgenf2.Show();
     285   fluct3d.ComputeSpectrum2D(hpkgenf2);
     286   {
     287   tagobs = "hpkgenf2"; posobs.PutObject(hpkgenf2,tagobs);
     288   }
    257289 }
    258290
    259291 cout<<"\n--- Computing a realization in real space"<<endl;
    260292 fluct3d.ComputeReal();
    261  r_8 undouble=0.;
    262  TArray<r_8> rgen = ArrayCast(pkgen,undouble);
    263293 double rmin,rmax; rgen.MinMax(rmin,rmax);
    264294 cout<<"rgen.Min = "<<rmin<<" , Max="<<rmax<<endl;
    265295
    266  cout<<"\n--- Check mean and variance in real space"<<endl;
    267  int_8 nlowone = fluct3d.NumberOfBad(-1.,1e+200);
    268  double rm,rs2; int_8 nm;
    269  nm = fluct3d.MeanSigma2(rm,rs2);
    270  cout<<"rgen:("<<nm<<") Mean = "<<rm<<", Sigma^2 = "
    271      <<rs2<<" -> "<<sqrt(rs2)<<",  n(<-1)="<<nlowone<<endl;
     296 if(1) fluct3d.WriteFits("!cmvobserv3d_r0.fits");
     297 if(1) fluct3d.WritePPF("cmvobserv3d_r0.ppf",true);
     298
     299 int_8 nm;
     300 double rm,rs2;
     301 if(1) {
     302   cout<<"\n--- Check mean and variance in real space"<<endl;
     303   int_8 nlowone = fluct3d.NumberOfBad(-1.,1e+200);
     304   nm = fluct3d.MeanSigma2(rm,rs2);
     305   cout<<"rgen:("<<nm<<") Mean = "<<rm<<", Sigma^2 = "
     306       <<rs2<<" -> "<<sqrt(rs2)<<",  n(<-1)="<<nlowone<<endl;
     307 }
    272308
    273309 if(1) {
     
    331367     <<rs2<<" -> "<<sqrt(rs2)<<endl;
    332368
    333  if(1) {
    334    cout<<"\n---Writing Cube to Fits file"<<endl;
    335    FitsImg3DWriter fwrt("!cmvobserv3dr.fits",FLOAT_IMG,5);
    336    fwrt.WriteKey("ZREF",zref," redshift");
    337    vector<long> n = fluct3d.GetNpix();
    338    fwrt.WriteKey("NX",n[0]," axe transverse 1");
    339    fwrt.WriteKey("NY",n[1]," axe transverse 2");
    340    fwrt.WriteKey("NZ",n[2]," axe longitudinal (redshift)");
    341    vector<r_8> d;
    342    d = fluct3d.GetDinc();
    343    fwrt.WriteKey("DX",d[0]," Mpc");
    344    fwrt.WriteKey("DY",d[1]," Mpc");
    345    fwrt.WriteKey("DZ",d[2]," Mpc");
    346    d = fluct3d.GetKinc();
    347    fwrt.WriteKey("DKX",d[0]," Mpc^-1");
    348    fwrt.WriteKey("DKY",d[1]," Mpc^-1");
    349    fwrt.WriteKey("DKZ",d[2]," Mpc^-1");
    350    fwrt.WriteKey("SNOISE",snoise," Msol");
    351    fwrt.Write(rgen);
    352  }
     369 if(1) fluct3d.WriteFits("!cmvobserv3d_r.fits");
     370 if(1) fluct3d.WritePPF("cmvobserv3d_r.ppf",true);
    353371
    354372 cout<<"\n--- Add noise to HI Flux snoise="<<snoise<<endl;
     
    358376     <<rs2<<" -> "<<sqrt(rs2)<<endl;
    359377
    360  if(0) {
    361    cout<<"\n--- Writing cmvobserv3dr.ppf"<<endl;
    362    string tag = "cmvobserv3dr.ppf";
    363    POutPersist pos(tag);
    364    tag = "rgen"; pos.PutObject(rgen,tag);
    365  }
    366 
    367378 //-----------------------------------------------------------------
    368379 // -- NE PAS FAIRE CA SI ON VEUT CONTINUER LA SIMULATION -> d_rho/rho ecrase
     380 
    369381 if(1) {
    370382   cout<<endl<<"\n--- ReComputing spectrum from real space"<<endl;
    371383   fluct3d.ReComputeFourier();
    372    HProf hpkrec(0.,fluct3d.GetKmax(),nhprof);
     384 }
     385
     386 if(1) {
     387   cout<<endl<<"\n--- Computing final spectrum"<<endl;
     388   HistoErr hpkrec(0.,knyqmax,nherr);
    373389   hpkrec.ReCenterBin();
     390   hpkrec.Show();
    374391   fluct3d.ComputeSpectrum(hpkrec);
    375392   tagobs = "hpkrec"; posobs.PutObject(hpkrec,tagobs);
    376393 }
    377394
     395 if(1) {
     396   cout<<"\n--- Computing final 2D spectrum"<<endl;
     397   Histo2DErr hpkrec2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz);
     398   hpkrec2.ReCenterBin(); hpkrec2.Zero();
     399   hpkrec2.Show();
     400   fluct3d.ComputeSpectrum2D(hpkrec2);
     401   {
     402   tagobs = "hpkrec2"; posobs.PutObject(hpkrec2,tagobs);
     403   }
     404 }
     405
    378406 return 0;
    379407}
    380408
    381409/*
    382 openppf cmvobserv3dk.ppf
    383 openppf cmvobserv3dr.ppf
     410######################################################
     411readfits cmvobserv3d_k.fits
     412readfits cmvobserv3d_r0.fits
     413readfits cmvobserv3d_r.fits
     414
     415openppf cmvobserv3d_k.ppf
     416openppf cmvobserv3d_r0.ppf
     417openppf cmvobserv3d_r.ppf
     418
     419# pour le plot 2D d'une slice en Z du 3D: to2d nom_obj3D num_slice
     420defscript to2d
     421 objaoper $1 sliceyz $2
     422 mv sliceyz_${2} ${1}_$2
     423 disp ${1}_$2
     424 echo display slice $2 of $1
     425endscript
     426
     427to2d $cobj 0
     428
     429######################################################
    384430openppf cmvobserv3d.ppf
    385431
    386 objaoper pkgen sliceyz 0
    387 
     432zone
    388433n/plot hpkz.val%x ! ! "nsta connectpoints"
    389434n/plot hpkgen.val%log10(x) x>0 ! "nsta same red connectpoints"
     
    394439n/plot hpkz.val*$k*$k/(2*M_PI*M_PI)%x ! "connectpoints"
    395440
    396 defscript rgensl
    397  objaoper rgen sliceyz $1
    398  disp sliceyz_$1
    399 endscript
    400 
    401 rgensl 0
    402 
     441zone 2 2
     442imag hpkgen2
     443imag hpkgenf2
     444imag hpkrec2
     445
     446zone
    403447disp hmdndm
    404448disp tirhmdndm
Note: See TracChangeset for help on using the changeset viewer.