Changeset 3358 in Sophya for trunk/Cosmo/SimLSS
- Timestamp:
- Oct 23, 2007, 12:19:27 PM (18 years ago)
- Location:
- trunk/Cosmo/SimLSS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvobserv3d.cc
r3354 r3358 539 539 540 540 //----------------------------------------------------------------- 541 cout<<endl<<"\n--- Converting fluctuations into mass"<<endl;542 fluct3d.TurnFluct2Mass();543 nm = fluct3d.MeanSigma2(rm,rs2);544 PrtTim(">>>> End Converting fluctuations into mass");545 546 541 if(no_poisson) { 547 542 cout<<"\n--- Converting !!!DIRECTLY!!! mass into HI mass: mass per pixel =" 548 543 <<mass_by_pixel<<endl; 549 rm = fluct3d.Turn Mass2MeanNumber(mass_by_mpc3); // ici on doit donner Msol/Mpc^3544 rm = fluct3d.TurnFluct2MeanNumber(mass_by_mpc3); // ici on doit donner Msol/Mpc^3 550 545 } else { 551 546 cout<<"\n--- Converting mass into galaxy number: gal per pixel =" 552 547 <<ngal_by_mpc3*fluct3d.GetDVol()<<endl; 553 rm = fluct3d.Turn Mass2MeanNumber(ngal_by_mpc3);548 rm = fluct3d.TurnFluct2MeanNumber(ngal_by_mpc3); // ici on doit donner Ngal/Mpc^3 554 549 } 555 550 nm = fluct3d.MeanSigma2(rm,rs2,0.,1e200); 556 551 nm = fluct3d.MeanSigma2(rm,rs2); 552 if(rm>0.) cout<<"normalised sigma(dM/M) is "<<sqrt(rs2)/rm<<endl; 557 553 PrtTim(">>>> End Converting mass into galaxy number or mass"); 558 554 -
trunk/Cosmo/SimLSS/genefluct3d.cc
r3354 r3358 1089 1089 } 1090 1090 1091 if(lp_>0) cout<<"--- NumberOfBad "<<nbad<<" px out of ]"<<vmin<<","<<vmax<<"["<<endl; 1091 if(lp_>0) cout<<"--- NumberOfBad "<<nbad<<" px out of ]"<<vmin<<","<<vmax 1092 <<"[ i.e. frac="<<nbad/(double)NRtot_<<endl; 1092 1093 return nbad; 1093 1094 } … … 1206 1207 } 1207 1208 1208 double GeneFluct3D::Turn Mass2MeanNumber(double val_by_mpc3)1209 { 1210 if(lp_>0) cout<<"--- Turn Mass2MeanNumber : "<<val_by_mpc3<<" quantity (gal or mass)/Mpc^3"<<endl;1211 1212 double mall=0., mgood=0.;1213 int_8 n all=0, ngood=0;1209 double GeneFluct3D::TurnFluct2MeanNumber(double val_by_mpc3) 1210 { 1211 if(lp_>0) cout<<"--- TurnFluct2MeanNumber : "<<val_by_mpc3<<" quantity (gal or mass)/Mpc^3"<<endl; 1212 1213 // First convert dRho/Rho into 1+dRho/Rho 1214 int_8 nball = 0; double sumall = 0., sumall2 = 0.; 1214 1215 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<Nz_;l++) { 1215 1216 int_8 ip = IndexR(i,j,l); 1216 mall += data_[ip]; nall++; 1217 if(data_[ip]>0.) {mgood += data_[ip]; ngood++;} 1218 } 1219 if(ngood>0) mgood /= (double)ngood; 1220 if(nall>0) mall /= (double)nall; 1221 if(lp_>0) cout<<"...ngood="<<ngood<<" mgood="<<mgood 1222 <<", nall="<<nall<<" mall="<<mall<<endl; 1223 if(ngood<=0 || mall<=0.) { 1224 cout<<"TurnMass2MeanNumber_Error: ngood="<<ngood<<" <=0 || mall="<<mall<<" <=0"<<endl; 1225 throw RangeCheckError("TurnMass2MeanNumber_Error: ngood<=0 || mall<=0"); 1226 } 1227 1228 // On doit mettre n*Vol galaxies (ou Msol) dans notre survey 1229 // On en met uniquement dans les pixels de masse >0. 1230 // On MET a zero les pixels <0 1231 // On renormalise sur les pixels>0 pour qu'on ait n*Vol galaxies (ou Msol) 1232 // comme on ne prend que les pixels >0, on doit normaliser 1233 // a la moyenne de <1+d_rho/rho> sur ces pixels 1234 // (rappel sur tout les pixels <1+d_rho/rho>=1) 1235 // nb de gal (ou Msol) a mettre ds 1 px: 1236 double dn = val_by_mpc3*Vol_/ (mgood/mall) /(double)ngood; 1237 if(lp_>0) cout<<"...quantity density move from " 1238 <<val_by_mpc3*Vol_/double(NRtot_)<<" to "<<dn<<" / pixel"<<endl; 1217 data_[ip] += 1.; 1218 nball++; sumall += data_[ip]; sumall2 += data_[ip]*data_[ip]; 1219 } 1220 if(nball>2) { 1221 sumall /= (double)nball; 1222 sumall2 = sumall2/(double)nball - sumall*sumall; 1223 if(lp_>0) cout<<"1+dRho/Rho: mean="<<sumall<<" variance="<<sumall2 1224 <<" -> "<<sqrt(fabs(sumall2))<<endl; 1225 } 1226 1227 // Find contribution for positive pixels 1228 int_8 nbpos = 0; double sumpos = 0. , sumpos2 = 0.; 1229 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<Nz_;l++) { 1230 int_8 ip = IndexR(i,j,l); 1231 double v = data_[ip]; 1232 if(data_[ip]>0.) {nbpos++; sumpos += v; sumpos2 += v*v;} 1233 } 1234 if(nbpos<1) { 1235 cout<<"TurnFluct2MeanNumber_Error: nbpos<1"<<endl; 1236 throw RangeCheckError("TurnFluct2MeanNumber_Error: nbpos<1"); 1237 } 1238 sumpos2 = sumpos2/nball - sumpos*sumpos/(nball*nball); 1239 if(lp_>0) 1240 cout<<"1+dRho/Rho with v<0 set to zero: mean="<<sumpos/nball 1241 <<" variance="<<sumpos2<<" -> "<<sqrt(fabs(sumpos2))<<endl; 1242 cout<<"Sum of positive values: sumpos="<<sumpos 1243 <<" (n(v>0) = "<<nbpos<<" frac(v>0)="<<nbpos/(double)NRtot_<<")"<<endl; 1244 1245 // - Mettre exactement val_by_mpc3*Vol galaxies (ou Msol) dans notre survey 1246 // - Uniquement dans les pixels de masse >0. 1247 // - Mise a zero des pixels <0 1248 double dn = val_by_mpc3 * Vol_ / sumpos; 1249 if(lp_>0) cout<<"...density move from " 1250 <<val_by_mpc3*dVol_<<" to "<<dn<<" / pixel"<<endl; 1239 1251 1240 1252 double sum = 0.; … … 1248 1260 } 1249 1261 1250 if(lp_>0) cout<< sum<<"...quantity put into survey/ "<<val_by_mpc3*Vol_<<endl;1262 if(lp_>0) cout<<"...quantity put into survey "<<sum<<" / "<<val_by_mpc3*Vol_<<endl; 1251 1263 1252 1264 return sum; -
trunk/Cosmo/SimLSS/genefluct3d.h
r3349 r3358 110 110 111 111 void TurnFluct2Mass(void); 112 double Turn Mass2MeanNumber(double val_by_mpc3);112 double TurnFluct2MeanNumber(double val_by_mpc3); 113 113 double ApplyPoisson(void); 114 114 double TurnNGal2Mass(FunRan& massdist,bool axeslog=false);
Note:
See TracChangeset
for help on using the changeset viewer.