Changeset 4030 in Sophya for trunk/Cosmo/RadioBeam/specpk.cc
- Timestamp:
- Oct 26, 2011, 7:42:21 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/RadioBeam/specpk.cc
r4028 r4030 209 209 210 210 // Generate mass field Fourier Coefficient 211 void Four3DPk::ComputeNoiseFourierAmp(Four2DResponse& resp, double f0, double df, Vector& angscales )211 void Four3DPk::ComputeNoiseFourierAmp(Four2DResponse& resp, double f0, double df, Vector& angscales, Vector& noisevec) 212 212 // angscale is a multiplicative factor converting transverse k (wave number) values to angular wave numbers 213 213 // typically = ComovRadialDistance 214 214 { 215 215 uint_8 nmodeok=0; 216 if ( angscales.Size() != fourAmp.SizeZ())217 throw SzMismatchError("ComputeNoiseFourierAmp(): angscales .Size()!=fourAmp.SizeZ()");216 if ((angscales.Size() != fourAmp.SizeZ())||(noisevec.Size() != fourAmp.SizeZ())) 217 throw SzMismatchError("ComputeNoiseFourierAmp(): angscales/noisevec.Size()!=fourAmp.SizeZ()"); 218 218 H21Conversions conv; 219 219 // fourAmp represent 3-D fourier transform of a real input array. … … 225 225 resp.setLambda(conv.getLambda()); 226 226 double angsc=angscales(kz); 227 double noisepow=noisevec(kz); 227 228 if (prtlev_>2) 228 cout << " Four3DPk::ComputeNoiseFourierAmp(...) - freq=" << f0+kz*df << " -> AngSc=" << angsc << endl; 229 cout << " Four3DPk::ComputeNoiseFourierAmp(...) - freq=" << f0+kz*df << " -> AngSc=" << angsc 230 << " NoisePow=" << noisepow << endl; 229 231 for(sa_size_t ky=0; ky<fourAmp.SizeY(); ky++) { 230 232 kyy = (ky>fourAmp.SizeY()/2) ? -(double)(fourAmp.SizeY()-ky)*dky_ : (double)ky*dky_; … … 234 236 if (rep<1.e-19) rep=1.e-19; 235 237 else nmodeok++; 236 amp = 1./sqrt(rep)/sqrt(2.);238 amp = sqrt(noisepow/rep/2.); 237 239 fourAmp(kx, ky, kz) = complex<TF>(rg_.Gaussian(amp), rg_.Gaussian(amp)); 238 240 } … … 445 447 PkNoiseCalculator::PkNoiseCalculator(Four3DPk& pk3, Four2DResponse& rep, double s2cut, int ngen, 446 448 const char* tit) 447 : pkn3d(pk3), frep(rep), S2CUT(s2cut), NGEN(ngen), title(tit), angscales_(pk3.SizeZ()) 449 : pkn3d(pk3), frep(rep), S2CUT(s2cut), NGEN(ngen), title(tit), angscales_(pk3.SizeZ()), pnoisefac_(pk3.SizeZ()) 448 450 { 449 451 SetFreqRange(); 450 452 SetAngScaleConversion(); 453 SetPNoiseFactor(); 451 454 SetPrtLevel(); 452 455 } … … 461 464 << " ... " << angscales_(angscales_.Size()-1) << endl; 462 465 for(int igen=0; igen<NGEN; igen++) { 463 pkn3d.ComputeNoiseFourierAmp(frep, freq0_, dfreq_, angscales_ );466 pkn3d.ComputeNoiseFourierAmp(frep, freq0_, dfreq_, angscales_, pnoisefac_); 464 467 if (igen==0) hnd = pkn3d.ComputePk(S2CUT,nbin,kmin,kmax,true); 465 468 else pkn3d.ComputePkCumul();
Note:
See TracChangeset
for help on using the changeset viewer.