#include "sopnamsp.h" #include "machdefs.h" #include #include #include #include #include #include #include "timing.h" #include "ntuple.h" #include "matharr.h" #include "constcosmo.h" #include "cosmocalc.h" #include "schechter.h" #include "geneutils.h" #include "genefluct3d.h" void usage(void); void usage(void) { cout<<"cmvobserv3d [...options...]"<0 noise evolved with distance (def no)"<,sigma,powlaw :"<0) { cout<<"\n--- Arguments: "<="< dloscom = "< sigma="< sigma="<0) { cout<<"\nWARNING: SchechterMassDist read from "<>>> End of definition"); //----------------------------------------------------------------- // FFTW3 (p26): faster if sizes 2^a 3^b 5^c 7^d 11^e 13^f with e+f=0 ou 1 cout< > pkgen; GeneFluct3D fluct3d(pkgen); fluct3d.SetPrtLevel(2); fluct3d.SetNThread(nthread); fluct3d.SetSize(nx,ny,nz,dx,dy,dz); fluct3d.SetObservator(zref,-nz/2.); fluct3d.SetCosmology(univ); fluct3d.SetGrowthFactor(growth); fluct3d.LosComRedshift(0.001,-1); //TArray& rgen = fluct3d.GetRealArray(); cout< sigma="<>>> End Initialisation de GeneFluct3D"); //----------------------------------------------------------------- cout<<"\n--- Computing a realization in Fourier space"<>>> End Computing a realization in Fourier space"); /* // CMVTEST for(int l=0;l0.)? 1./k2: 0.; //pkgen(l,j,i) = ComplexGaussRan(sqrt(pk/2.)); //pkgen(l,j,i) = sqrt(pk/2.); pkgen(l,j,i) = 1.; } // CMVTEST */ cout<<"\n--- Checking realization spectra"<>>> End Checking realization spectra"); if(comp2dspec) { cout<<"\n--- Checking realization 2D spectra"<>>> End Checking realization 2D spectra"); } if(filter_by_pixel!=0) { cout<<"\n--- Computing convolution by pixel shape"<>>> End Computing convolution by pixel shape"); cout<<"\n--- Checking realization spectra after pixel shape convol."<>>> End Checking realization spectra"); if(comp2dspec) { cout<<"\n--- Checking realization 2D spectra after pixel shape convol."<>>> End Checking realization 2D spectra"); } } if(wfits) { fluct3d.WriteFits("!cmvobserv3d_k0.fits"); PrtTim(">>>> End WriteFits"); } if(wppf) { fluct3d.WritePPF("cmvobserv3d_k0.ppf",false); PrtTim(">>>> End WritePPF"); } //----------------------------------------------------------------- cout<<"\n--- Computing a realization in real space"<>>> End Computing a realization in real space"); if(use_growth_factor) { cout<<"\n--- Apply Growth factor"<>>> End Applying growth factor"); } int_8 nm; double rmref,rs2ref; cout<<"\n--- Computing reference variance in real space"<>>> End Computing reference variance in real space"); if(wfits) { fluct3d.WriteFits("!cmvobserv3d_r0.fits"); PrtTim(">>>> End WriteFits"); } if(wppf) { fluct3d.WritePPF("cmvobserv3d_r0.ppf",true); PrtTim(">>>> End WritePPF"); } if(wslice) { fluct3d.WriteSlicePPF("cmvobserv3d_s_r0.ppf"); PrtTim(">>>> End WriteSlicePPF"); } cout<<"\n--- Check mean and variance in real space"<>>> End Check mean and variance in real space"); if(compvarreal) { cout<<"\n--- Check variance sigmaR in real space"<>>> End Check variance sigmaR in real space"); } //STOP_HERE_FOR QUICK_DEBUG // return -41; //----------------------------------------------------------------- cout<>>> End Converting fluctuations into mass"); cout<<"\n--- Converting mass into galaxy number: gal per pixel =" <>>> End Converting mass into galaxy number"); cout<<"\n--- Set negative and null pixels to BAD"<>>> End Set negative pixels to BAD etc..."); cout<<"\n--- Apply poisson on galaxy number"<>>> End Apply poisson on galaxy number"); if(wslice) { fluct3d.WriteSlicePPF("cmvobserv3d_s_rn.ppf"); PrtTim(">>>> End WriteSlicePPF"); } cout<<"\n--- Convert Galaxy number to HI mass"<>>> End creating tabulated histograms for trials"); } mhi = fluct3d.TurnNGal2MassQuick(schmdist); schmdist.PrintStatus(); } else { mhi = fluct3d.TurnNGal2Mass(tirhmdndm,true); } cout<>>> End Convert Galaxy number to HI mass"); cout<<"\n--- Set BAD pixels to Zero"<>>> End Set BAD pixels to Zero etc..."); if(wfits) { fluct3d.WriteFits("!cmvobserv3d_r.fits"); PrtTim(">>>> End WriteFits"); } if(wppf) { fluct3d.WritePPF("cmvobserv3d_r.ppf",true); PrtTim(">>>> End WritePPF"); } if(wslice) { fluct3d.WriteSlicePPF("cmvobserv3d_s_r.ppf"); PrtTim(">>>> End WriteSlicePPF"); } if(do_agn) { cout<<"\n--- Add AGN: ="<>>> End Add AGN"); } if(snoise>0.) { cout<<"\n--- Add noise to HI Flux snoise="<>>> End Add noise"); } if(scalecube!=0.) { // Si scalecube==0 pas de normalisation cout<<"\n--- Scale cube rs2ref="<0.) { // si negatif on scale automatiquement nm = fluct3d.MeanSigma2(rm,rs2); if(rs2>0.) {scalecube=sqrt(rs2ref)/sqrt(rs2); offsetcube=-rm;} } cout<<"...scale="<>>> End Scale cube"); } if(wfits) { fluct3d.WriteFits("!cmvobserv3d_rf.fits"); PrtTim(">>>> End WriteFits"); } if(wppf) { fluct3d.WritePPF("cmvobserv3d_rf.ppf",true); PrtTim(">>>> End WritePPF"); } if(wslice) { fluct3d.WriteSlicePPF("cmvobserv3d_s_rf.ppf"); PrtTim(">>>> End WriteSlicePPF"); } //----------------------------------------------------------------- // -- NE PAS FAIRE CA SI ON VEUT CONTINUER LA SIMULATION -> d_rho/rho ecrase cout<>>> End ReComputing spectrum"); if(wfits) { fluct3d.WriteFits("!cmvobserv3d_k.fits"); PrtTim(">>>> End WriteFits"); } if(wppf) { fluct3d.WritePPF("cmvobserv3d_k.ppf",false); PrtTim(">>>> End WritePPF"); } cout<>>> End Computing final spectrum"); if(comp2dspec) { cout<<"\n--- Computing final 2D spectrum"<>>> End Computing final 2D spectrum"); } PrtTim(">>>> End Of Job"); return 0; }