Changeset 3330 in Sophya for trunk/Cosmo/SimLSS/genefluct3d.cc
- Timestamp:
- Oct 1, 2007, 7:10:50 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/genefluct3d.cc
r3329 r3330 321 321 if(lp_>1 && n>0) 322 322 for(int i=0;i<n;i++) 323 if(i==0 || abs(i-n/2)<2 || i==n-1) 324 cout<<" "<<i<<" "<<loscom2zred_[i]<<endl; 323 if(i<2 || abs(i-n/2)<2 || i>=n-2) 324 cout<<" i="<<i 325 <<" d="<<loscom2zred_min_+i*(loscom2zred_max_-loscom2zred_min_)/(n-1.) 326 <<" Mpc z="<<loscom2zred_[i]<<endl; 325 327 } 326 328 … … 374 376 init_fftw(); 375 377 SetObservator(zref,kzref); 378 array_allocated_ = true; 376 379 } catch (PThrowable & exc) { 377 380 cout<<"Exception : "<<(string)typeid(exc).name() … … 438 441 init_fftw(); 439 442 SetObservator(zref,kzref); 443 array_allocated_ = true; 440 444 } catch (PThrowable & exc) { 441 445 cout<<"Exception : "<<(string)typeid(exc).name() … … 724 728 long ii = (i>Nx_/2) ? Nx_-i : i; 725 729 double kx = ii*Dkx_ *Dx_/2; 726 double pk_x = pixelfilter(kx); 730 double pk_x = pixelfilter(kx); 727 731 for(long j=0;j<Ny_;j++) { 728 732 long jj = (j>Ny_/2) ? Ny_-j : j; 729 733 double ky = jj*Dky_ *Dy_/2; 730 double pk_y = pixelfilter(ky);734 double pk_y = pixelfilter(ky); 731 735 for(long l=0;l<NCz_;l++) { 732 736 double kz = l*Dkz_ *Dz_/2; … … 826 830 double ky = jj*Dky_; ky *= ky; 827 831 for(long l=0;l<NCz_;l++) { 828 double kz = l*Dkz_; kz *= kz;829 double k = sqrt(kx+ky+kz );832 double kz = l*Dkz_; 833 double k = sqrt(kx+ky+kz*kz); 830 834 double pk = MODULE2(T_(l,j,i)); 831 835 herr.Add(k,pk); … … 862 866 double pk = MODULE2(T_(l,j,i)); 863 867 herr.Add(kt,kz,pk); 868 } 869 } 870 } 871 herr.ToVariance(); 872 873 // renormalize to directly compare to original spectrum 874 double norm = Vol_; 875 herr *= norm; 876 877 return 0; 878 } 879 880 //------------------------------------------------------------------- 881 int GeneFluct3D::ComputeSpectrum(HistoErr& herr,double sigma,bool pixcor) 882 // Compute spectrum from "T" and fill HistoErr "herr" 883 // AVEC la soustraction du niveau de bruit et la correction par filterpixel() 884 // Si on ne fait pas ca, alors on obtient un spectre non-isotrope! 885 // 886 // T : dans le format standard de GeneFuct3D: T(nz,ny,nx) 887 // cad T(kz,ky,kx) avec 0<kz<kz_nyq -ky_nyq<ky<ky_nyq -kx_nyq<kx<kx_nyq 888 { 889 if(lp_>0) cout<<"--- ComputeSpectrum: sigma="<<sigma<<endl; 890 check_array_alloc(); 891 892 if(sigma<=0.) sigma = 0.; 893 double sigma2 = sigma*sigma / (double)NRtot_; 894 895 if(herr.NBins()<0) return -1; 896 herr.Zero(); 897 898 TVector<r_8> vfz(NCz_); 899 if(pixcor) // kz = l*Dkz_ 900 for(long l=0;l<NCz_;l++) {vfz(l)=pixelfilter(l*Dkz_ *Dz_/2); vfz(l)*=vfz(l);} 901 902 // Attention a l'ordre 903 for(long i=0;i<Nx_;i++) { 904 long ii = (i>Nx_/2) ? Nx_-i : i; 905 double kx = ii*Dkx_; 906 double fx = (pixcor) ? pixelfilter(kx*Dx_/2): 1.; 907 kx *= kx; fx *= fx; 908 for(long j=0;j<Ny_;j++) { 909 long jj = (j>Ny_/2) ? Ny_-j : j; 910 double ky = jj*Dky_; 911 double fy = (pixcor) ? pixelfilter(ky*Dy_/2): 1.; 912 ky *= ky; fy *= fy; 913 for(long l=0;l<NCz_;l++) { 914 double kz = l*Dkz_; 915 double k = sqrt(kx+ky+kz*kz); 916 double pk = MODULE2(T_(l,j,i)) - sigma2; 917 double fz = (pixcor) ? vfz(l): 1.; 918 double f = fx*fy*fz; 919 if(f>0.) herr.Add(k,pk/f); 920 } 921 } 922 } 923 herr.ToVariance(); 924 925 // renormalize to directly compare to original spectrum 926 double norm = Vol_; 927 herr *= norm; 928 929 return 0; 930 } 931 932 int GeneFluct3D::ComputeSpectrum2D(Histo2DErr& herr,double sigma,bool pixcor) 933 // AVEC la soustraction du niveau de bruit et la correction par filterpixel() 934 { 935 if(lp_>0) cout<<"--- ComputeSpectrum2D: sigma="<<sigma<<endl; 936 check_array_alloc(); 937 938 if(sigma<=0.) sigma = 0.; 939 double sigma2 = sigma*sigma / (double)NRtot_; 940 941 if(herr.NBinX()<0 || herr.NBinY()<0) return -1; 942 herr.Zero(); 943 944 TVector<r_8> vfz(NCz_); 945 if(pixcor) // kz = l*Dkz_ 946 for(long l=0;l<NCz_;l++) {vfz(l)=pixelfilter(l*Dkz_ *Dz_/2); vfz(l)*=vfz(l);} 947 948 // Attention a l'ordre 949 for(long i=0;i<Nx_;i++) { 950 long ii = (i>Nx_/2) ? Nx_-i : i; 951 double kx = ii*Dkx_; 952 double fx = (pixcor) ? pixelfilter(kx*Dx_/2) : 1.; 953 kx *= kx; fx *= fx; 954 for(long j=0;j<Ny_;j++) { 955 long jj = (j>Ny_/2) ? Ny_-j : j; 956 double ky = jj*Dky_; 957 double fy = (pixcor) ? pixelfilter(ky*Dy_/2) : 1.; 958 ky *= ky; fy *= fy; 959 double kt = sqrt(kx+ky); 960 for(long l=0;l<NCz_;l++) { 961 double kz = l*Dkz_; 962 double pk = MODULE2(T_(l,j,i)) - sigma2; 963 double fz = (pixcor) ? vfz(l): 1.; 964 double f = fx*fy*fz; 965 if(f>0.) herr.Add(kt,kz,pk/f); 864 966 } 865 967 }
Note:
See TracChangeset
for help on using the changeset viewer.