Changeset 4030 in Sophya for trunk/Cosmo/RadioBeam/specpk.cc


Ignore:
Timestamp:
Oct 26, 2011, 7:42:21 PM (14 years ago)
Author:
ansari
Message:

Corrections papiers avec les commentaires du referee (1) - Reza 26/10/2011

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/RadioBeam/specpk.cc

    r4028 r4030  
    209209
    210210// Generate mass field Fourier Coefficient
    211 void Four3DPk::ComputeNoiseFourierAmp(Four2DResponse& resp, double f0, double df, Vector& angscales)
     211void Four3DPk::ComputeNoiseFourierAmp(Four2DResponse& resp, double f0, double df, Vector& angscales, Vector& noisevec)
    212212// angscale is a multiplicative factor converting transverse k (wave number) values to angular wave numbers
    213213// typically = ComovRadialDistance
    214214{
    215215  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()");
    218218  H21Conversions conv;
    219219  // fourAmp represent 3-D fourier transform of a real input array.
     
    225225    resp.setLambda(conv.getLambda());
    226226    double angsc=angscales(kz);
     227    double noisepow=noisevec(kz);
    227228    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;
    229231    for(sa_size_t ky=0; ky<fourAmp.SizeY(); ky++) {
    230232      kyy =  (ky>fourAmp.SizeY()/2) ? -(double)(fourAmp.SizeY()-ky)*dky_ : (double)ky*dky_;
     
    234236        if (rep<1.e-19)  rep=1.e-19;
    235237        else  nmodeok++;
    236         amp = 1./sqrt(rep)/sqrt(2.);
     238        amp = sqrt(noisepow/rep/2.);
    237239        fourAmp(kx, ky, kz) = complex<TF>(rg_.Gaussian(amp), rg_.Gaussian(amp));   
    238240      }
     
    445447PkNoiseCalculator::PkNoiseCalculator(Four3DPk& pk3, Four2DResponse& rep, double s2cut, int ngen,
    446448                                     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())
    448450{
    449451  SetFreqRange();
    450452  SetAngScaleConversion();
     453  SetPNoiseFactor();
    451454  SetPrtLevel();
    452455}
     
    461464       << " ... " << angscales_(angscales_.Size()-1) << endl;
    462465  for(int igen=0; igen<NGEN; igen++) {
    463     pkn3d.ComputeNoiseFourierAmp(frep, freq0_, dfreq_, angscales_);
     466    pkn3d.ComputeNoiseFourierAmp(frep, freq0_, dfreq_, angscales_, pnoisefac_);
    464467    if (igen==0) hnd = pkn3d.ComputePk(S2CUT,nbin,kmin,kmax,true);
    465468    else pkn3d.ComputePkCumul();
Note: See TracChangeset for help on using the changeset viewer.