Changeset 3331 in Sophya for trunk/Cosmo/SimLSS/genefluct3d.cc


Ignore:
Timestamp:
Oct 2, 2007, 3:11:22 PM (18 years ago)
Author:
cmv
Message:

mise en place evolution seulement sur distance au plan Z , cmv 02/10/2007

File:
1 edited

Legend:

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

    r3330 r3331  
    744744
    745745//-------------------------------------------------------------------
    746 void GeneFluct3D::ApplyGrowthFactor(void)
     746void GeneFluct3D::ApplyGrowthFactor(int type_evol)
    747747// Apply Growth to real space
    748748// Using the correspondance between redshift and los comoving distance
    749749// describe in vector "zred_" "loscom_"
    750 {
    751  if(lp_>0) cout<<"--- ApplyGrowthFactor ---"<<endl;
     750// type_evol = 1 : evolution de la puissance du bruit avec la distance a l'observateur
     751//             2 : evolution de la puissance du bruit avec la distance du plan Z
     752//             (tous les pixels d'un plan Z sont mis au meme redshift z que celui du milieu)
     753{
     754 if(lp_>0) cout<<"--- ApplyGrowthFactor: evol="<<type_evol<<endl;
    752755 check_array_alloc();
    753756
     
    756759   cout<<bla<<endl; throw ParmError(bla);
    757760 }
     761 if(type_evol<1 || type_evol>2) {
     762   char *bla = "GeneFluct3D::ApplyGrowthFactor_Error: bad type_evol value";
     763   cout<<bla<<endl; throw ParmError(bla);
     764 }
    758765
    759766 InterpFunc interpinv(loscom2zred_min_,loscom2zred_max_,loscom2zred_);
     
    762769 //CHECK: Histo hgr(0.9*zred_[0],1.1*zred_[n-1],1000);
    763770 for(long i=0;i<Nx_;i++) {
    764    double dx2 = xobs_[0] - i*Dx_; dx2 *= dx2;
     771   double dx2 = DXcom(i); dx2 *= dx2;
    765772   for(long j=0;j<Ny_;j++) {
    766      double dy2 = xobs_[1] - j*Dy_; dy2 *= dy2;
     773     double dy2 = DYcom(j); dy2 *= dy2;
    767774     for(long l=0;l<Nz_;l++) {
    768        double dz2 = xobs_[2] - l*Dz_; dz2 *= dz2;
    769        dz2 = sqrt(dx2+dy2+dz2);
    770        double z = interpinv(dz2);
     775       double dz = DZcom(l);
     776       if(type_evol==1) dz = sqrt(dx2+dy2+dz*dz);
     777         else dz = fabs(dz); // tous les plans Z au meme redshift
     778       double z = interpinv(dz);
    771779       //CHECK: hgr.Add(z);
    772780       double dzgr = (*growth_)(z);   // interpolation par morceau
     
    14161424}
    14171425
    1418 void GeneFluct3D::AddNoise2Real(double snoise,bool with_evol)
     1426void GeneFluct3D::AddNoise2Real(double snoise,int type_evol)
    14191427// add noise to every pixels (meme les <=0 !)
    1420 {
    1421  if(lp_>0) cout<<"--- AddNoise2Real: snoise = "<<snoise<<" evol="<<with_evol<<endl;
    1422  check_array_alloc();
     1428// type_evol = 0 : pas d'evolution de la puissance du bruit
     1429//             1 : evolution de la puissance du bruit avec la distance a l'observateur
     1430//             2 : evolution de la puissance du bruit avec la distance du plan Z
     1431//                 (tous les plans Z sont mis au meme redshift z de leur milieu)
     1432{
     1433 if(lp_>0) cout<<"--- AddNoise2Real: snoise = "<<snoise<<" evol="<<type_evol<<endl;
     1434 check_array_alloc();
     1435
     1436 if(type_evol<0) type_evol = 0;
     1437 if(type_evol>2) {
     1438   char *bla = "GeneFluct3D::AddNoise2Real_Error: bad type_evol value";
     1439   cout<<bla<<endl; throw ParmError(bla);
     1440 }
    14231441
    14241442 vector<double> correction;
    14251443 InterpFunc *intercor = NULL;
    14261444
    1427  if(with_evol) {
     1445 if(type_evol>0) {
    14281446   // Sigma_Noise(en mass) :
    14291447   //      Slim ~ 1/sqrt(DNu) * sqrt(nlobe)   en W/m^2Hz
     
    14541472 }
    14551473
    1456  double dx2=0., dy2=0., dz2=0.;
     1474 double corrlim[2] = {1.,1.};
    14571475 for(long i=0;i<Nx_;i++) {
    1458    dx2 = DXcom(i); dx2 *= dx2;
     1476   double dx2 = DXcom(i); dx2 *= dx2;
    14591477   for(long j=0;j<Ny_;j++) {
    1460      dy2 = DYcom(j); dy2 *= dy2;
     1478     double dy2 = DYcom(j); dy2 *= dy2;
    14611479     for(long l=0;l<Nz_;l++) {
    14621480       double corr = 1.;
    1463        if(with_evol) {
    1464          dz2 = DZcom(l); dz2 *= dz2; dz2 = sqrt(dx2+dy2+dz2);
    1465          corr = (*intercor)(dz2);
     1481       if(type_evol>0) {
     1482         double dz = DZcom(l);
     1483         if(type_evol==1) dz = sqrt(dx2+dy2+dz*dz);
     1484           else dz = fabs(dz); // tous les plans Z au meme redshift
     1485         corr = (*intercor)(dz);
     1486         if(corr<corrlim[0]) corrlim[0]=corr; else if(corr>corrlim[1]) corrlim[1]=corr;
    14661487       }
    14671488       int_8 ip = IndexR(i,j,l);
     
    14701491   }
    14711492 }
     1493 if(type_evol>0)
     1494   cout<<"correction factor range: ["<<corrlim[0]<<","<<corrlim[1]<<"]"<<endl;
    14721495
    14731496 if(intercor!=NULL) delete intercor;
Note: See TracChangeset for help on using the changeset viewer.