#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...]"< scalemass=1.e-8"<,sigma,powlaw :"<0) { cout<<"\n--- Arguments: "<="< dloscom = "< sigma="< sigma="<0) { cout<<"\nSchechterMassDist read from "<1e-4*schmin || fabs(m2-schmax)>1e-4*schmax) { cout<<"FATAL_ERROR: INCONSISTENT SchechterMassDist file / Schechter or limits"<>>> 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 = fluct3d.GetComplexArray(); TArray& rgen = fluct3d.GetRealArray(); cout< sigma="<>>> End Initialisation de GeneFluct3D"); //----------------------------------------------------------------- cout<<"\n--- Computing a realization in Fourier space"<0) pkz.SetZ(0.); else pkz.SetZ(zref); cout<<"Power spectrum set at redshift: "<>>> End Computing a realization in Fourier space"); 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"); cout<<"\n--- Checking realization spectra after pixel shape convol. with pixel correc."<>>> End Checking realization spectra with pixel correc."); if(comp2dspec) { cout<<"\n--- Checking realization 2D spectra after pixel shape convol."<>>> End Checking realization 2D spectra"); cout<<"\n--- Checking realization 2D spectra after pixel shape convol. with pixel correc."<>>> End Checking realization 2D spectra with pixel correc."); } } 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>0) { 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"); } //----------------------------------------------------------------- if(no_poisson) { cout<<"\n--- Converting !!!DIRECTLY!!! mass into HI mass: mass per pixel =" <>>> End Converting mass into galaxy number or mass"); if( !no_poisson ) { 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"); } //----------------------------------------------------------------- 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"); ////} //----------------------------------------------------------------- double snoisesave = 0.; if(snoise>0.) { cout<<"\n--- Add noise to HI Flux snoise="<>>> End Add noise"); } //----------------------------------------------------------------- if(scalemass!=0. && scalemass!=1.) { // Si scalemass==0 pas de normalisation if(scalemass<0.) scalemass = 1. / (-scalemass * mass_by_pixel); cout<<"\n--- Scale cube 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"); cout<>>> End Computing final spectrum with pixel deconv."); if(comp2dspec) { cout<<"\n--- Computing final 2D spectrum"<>>> End Computing final 2D spectrum"); cout<<"\n--- Computing final 2D spectrum with pixel deconv."<>>> End Computing final 2D spectrum with pixel deconv."); } PrtTim(">>>> End Of Job"); return 0; }