Changeset 3331 in Sophya for trunk/Cosmo/SimLSS/genefluct3d.cc
- Timestamp:
- Oct 2, 2007, 3:11:22 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/genefluct3d.cc
r3330 r3331 744 744 745 745 //------------------------------------------------------------------- 746 void GeneFluct3D::ApplyGrowthFactor( void)746 void GeneFluct3D::ApplyGrowthFactor(int type_evol) 747 747 // Apply Growth to real space 748 748 // Using the correspondance between redshift and los comoving distance 749 749 // 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; 752 755 check_array_alloc(); 753 756 … … 756 759 cout<<bla<<endl; throw ParmError(bla); 757 760 } 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 } 758 765 759 766 InterpFunc interpinv(loscom2zred_min_,loscom2zred_max_,loscom2zred_); … … 762 769 //CHECK: Histo hgr(0.9*zred_[0],1.1*zred_[n-1],1000); 763 770 for(long i=0;i<Nx_;i++) { 764 double dx2 = xobs_[0] - i*Dx_; dx2 *= dx2;771 double dx2 = DXcom(i); dx2 *= dx2; 765 772 for(long j=0;j<Ny_;j++) { 766 double dy2 = xobs_[1] - j*Dy_; dy2 *= dy2;773 double dy2 = DYcom(j); dy2 *= dy2; 767 774 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); 771 779 //CHECK: hgr.Add(z); 772 780 double dzgr = (*growth_)(z); // interpolation par morceau … … 1416 1424 } 1417 1425 1418 void GeneFluct3D::AddNoise2Real(double snoise, bool with_evol)1426 void GeneFluct3D::AddNoise2Real(double snoise,int type_evol) 1419 1427 // 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 } 1423 1441 1424 1442 vector<double> correction; 1425 1443 InterpFunc *intercor = NULL; 1426 1444 1427 if( with_evol) {1445 if(type_evol>0) { 1428 1446 // Sigma_Noise(en mass) : 1429 1447 // Slim ~ 1/sqrt(DNu) * sqrt(nlobe) en W/m^2Hz … … 1454 1472 } 1455 1473 1456 double dx2=0., dy2=0., dz2=0.;1474 double corrlim[2] = {1.,1.}; 1457 1475 for(long i=0;i<Nx_;i++) { 1458 d x2 = DXcom(i); dx2 *= dx2;1476 double dx2 = DXcom(i); dx2 *= dx2; 1459 1477 for(long j=0;j<Ny_;j++) { 1460 d y2 = DYcom(j); dy2 *= dy2;1478 double dy2 = DYcom(j); dy2 *= dy2; 1461 1479 for(long l=0;l<Nz_;l++) { 1462 1480 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; 1466 1487 } 1467 1488 int_8 ip = IndexR(i,j,l); … … 1470 1491 } 1471 1492 } 1493 if(type_evol>0) 1494 cout<<"correction factor range: ["<<corrlim[0]<<","<<corrlim[1]<<"]"<<endl; 1472 1495 1473 1496 if(intercor!=NULL) delete intercor;
Note:
See TracChangeset
for help on using the changeset viewer.