Changeset 3358 in Sophya for trunk


Ignore:
Timestamp:
Oct 23, 2007, 12:19:27 PM (18 years ago)
Author:
cmv
Message:

suppression et rename de TurnMass2MeanNumber , cmv 23/10/2007

Location:
trunk/Cosmo/SimLSS
Files:
3 edited

Legend:

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

    r3354 r3358  
    539539
    540540 //-----------------------------------------------------------------
    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 
    546541 if(no_poisson) {
    547542   cout<<"\n--- Converting !!!DIRECTLY!!! mass into HI mass: mass per pixel ="
    548543       <<mass_by_pixel<<endl;
    549    rm = fluct3d.TurnMass2MeanNumber(mass_by_mpc3); // ici on doit donner Msol/Mpc^3
     544   rm = fluct3d.TurnFluct2MeanNumber(mass_by_mpc3); // ici on doit donner Msol/Mpc^3
    550545 } else {
    551546   cout<<"\n--- Converting mass into galaxy number: gal per pixel ="
    552547       <<ngal_by_mpc3*fluct3d.GetDVol()<<endl;
    553    rm = fluct3d.TurnMass2MeanNumber(ngal_by_mpc3);
     548   rm = fluct3d.TurnFluct2MeanNumber(ngal_by_mpc3); // ici on doit donner Ngal/Mpc^3
    554549 }
    555550 nm = fluct3d.MeanSigma2(rm,rs2,0.,1e200);
    556551 nm = fluct3d.MeanSigma2(rm,rs2);
     552 if(rm>0.) cout<<"normalised sigma(dM/M) is "<<sqrt(rs2)/rm<<endl;
    557553 PrtTim(">>>> End Converting mass into galaxy number or mass");
    558554
  • trunk/Cosmo/SimLSS/genefluct3d.cc

    r3354 r3358  
    10891089 }
    10901090
    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;
    10921093 return nbad;
    10931094}
     
    12061207}
    12071208
    1208 double GeneFluct3D::TurnMass2MeanNumber(double val_by_mpc3)
    1209 {
    1210  if(lp_>0) cout<<"--- TurnMass2MeanNumber : "<<val_by_mpc3<<" quantity (gal or mass)/Mpc^3"<<endl;
    1211 
    1212  double mall=0., mgood=0.;
    1213  int_8  nall=0,  ngood=0;
     1209double 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.;
    12141215 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<Nz_;l++) {
    12151216   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;
    12391251
    12401252 double sum = 0.;
     
    12481260 }
    12491261
    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;
    12511263
    12521264 return sum;
  • trunk/Cosmo/SimLSS/genefluct3d.h

    r3349 r3358  
    110110
    111111  void TurnFluct2Mass(void);
    112   double TurnMass2MeanNumber(double val_by_mpc3);
     112  double TurnFluct2MeanNumber(double val_by_mpc3);
    113113  double ApplyPoisson(void);
    114114  double TurnNGal2Mass(FunRan& massdist,bool axeslog=false);
Note: See TracChangeset for help on using the changeset viewer.