Changeset 4026 in Sophya for trunk/Cosmo/RadioBeam/pknoise.cc


Ignore:
Timestamp:
Oct 10, 2011, 11:31:03 PM (14 years ago)
Author:
ansari
Message:

Modif programme pknoise.cc et classes Four3DPk, PkNoiseCalculator pour calcul spectre de bruit en faisant varier la reponse instrumentale avec la frequence, Reza 10/10/2011

File:
1 edited

Legend:

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

    r3948 r4026  
    66
    77  Usage:  pknoise pknoise [-parname value] Diameter/Four2DRespTableFile OutPPFName
    8           -parname : -noise , -renmax , -scut , -ngen , -z , -prt
     8          -parname : -noise , -renmax , -scut , -ngen , -z , -bsize , -cszmpc ,  -prt
    99---------------------------------------------------------------  */
    1010
     
    4545       << "    -ngen NGen (default=0) number of noise fourier amp generations \n"
    4646       << "       NGen=0 -> Call ComputeNoisePk(), else generate Fourier Amplitudes (random) \n"
    47        << "    -z redshift (default=0.7) \n"
     47       << "       NGen=-1 -> Call ComputeNoisePk(), dont change Four3DPk cell size \n"
     48       << "    -bsize sx,sy,sz : 3D real space box size (default=512x512x256) \n"   
     49       << "    -cszmpc sx,sy,sz : 3D real space box cell size in Mpc (default=3x3x3) \n"   
     50       << "    -z z,dA,H_z : redshift,ComovDist(z),H(z) (default=1.0,3330,120.5) \n"
    4851       << "    -scut SCutValue (default= -100.) \n"
    4952       << "       if SCutValue<0. ==> SCut=MinNoisePower*(-SCutValue) \n"
     
    8083  bool fgautoscut=true;
    8184  double FacSCut=-SCut;
    82   double z_Redshift=0.7 ;  // 21 cm at z=0.7 -> 0.357 m 
     85  double z_Redshift=1.0 ;  // z=0.7 : 21 cm at z=0.7 -> 0.357 m 
     86  double comov_dA_z=3330.;  // Comoving radial distance = (1+z)dA
     87  double H_z=120.5;  // Hubble_param(z)
     88  int box3dsz[3]={512,512,256};
     89  double cellsz[3]={3.5,3.5,3.5};
     90
    8391  int prtlev=0;
    8492  int prtmod=10;
     
    101109    }
    102110    else if (strcmp(arg[ka],"-z")==0) {
    103       z_Redshift=atof(arg[ka+1]);  ka+=2;
     111      sscanf(arg[ka+1],"%lg,%lg,%lg",&z_Redshift,&comov_dA_z,&H_z);  ka+=2;
     112    }
     113    else if (strcmp(arg[ka],"-bsize")==0) {
     114      sscanf(arg[ka+1],"%d,%d,%d",box3dsz,box3dsz+1,box3dsz+2);   ka+=2;
     115    }
     116    else if (strcmp(arg[ka],"-cszmpc")==0) {
     117      sscanf(arg[ka+1],"%lg,%lg,%lg",cellsz,cellsz+1,cellsz+2);   ka+=2;
    104118    }
    105119    else if (strcmp(arg[ka],"-prt")==0) {
     
    169183    cout << " pknoise[2]: Instanciating object type Four3DPk  " << endl;
    170184    RandomGenerator rg;
    171     Four3DPk m3d(rg);
    172     m3d.SetCellSize(2.*DeuxPI, 2.*DeuxPI, 2.*DeuxPI);
     185
     186    double dkxmpc=2.*DeuxPI;
     187    double dkympc=2.*DeuxPI;
     188    double dkzmpc=2.*DeuxPI;
     189    double angscale=1.;
     190    if (NMAX<0)  { box3dsz[0]=256; box3dsz[1]=256;  box3dsz[3]=128; }
     191    else {
     192      angscale=comov_dA_z;
     193      dkxmpc = DeuxPI/(double)box3dsz[0]/cellsz[0];
     194      dkympc = DeuxPI/(double)box3dsz[1]/cellsz[1];
     195      dkzmpc = DeuxPI/(double)box3dsz[2]/cellsz[2];
     196    }
     197    cout << " pknoise[2.b]: ComovDist" << comov_dA_z << " Mpc H(z)=" << H_z << " Mpc/km/s -> angscale=" << angscale << endl;
     198    cout << " pknoise[2.c]: Four3DPk m3d(rg," << box3dsz[0]/2 << "," << box3dsz[1] << ","
     199         << box3dsz[2] << ")" << endl;
     200    Four3DPk m3d(rg,box3dsz[0]/2,box3dsz[1],box3dsz[2]);
     201    cout << " pknoise[2.d]: m3d.SetCellSize(" << dkxmpc << "," << dkympc << "," << dkzmpc << endl;
     202    m3d.SetCellSize(dkxmpc, dkympc, dkzmpc);
    173203    m3d.SetPrtLevel(prtlev,prtmod);
    174204
     
    176206    if (NMAX>0) {
    177207      PkNoiseCalculator pkn(m3d, *(arep_p), SCut, NMAX, tits.c_str());
     208      double dfreq=H_z*cellsz[2]/(1+z_Redshift)/lambda/1000.;
     209      double freq0=conv.getFrequency()-dfreq*box3dsz[2]/2;
     210      cout << " pknoise[3.b]: Freq0=" << freq0 << " dFreq=" << dfreq << " freq(z=" << z_Redshift << ")="
     211           << conv.getFrequency() << " AngScale=" << angscale << endl;
     212      pkn.SetFreqRange(freq0, dfreq);
     213      pkn.SetAngScaleConversion(angscale);
    178214      pkn.SetPrtLevel(prtlev,prtmod);
    179215      HProf hpn = pkn.Compute();
    180       cout << " pknoise[3.b]: writing hpn noise profile to " << outfile << endl;
     216      cout << " pknoise[3.c]: writing hpn noise profile to " << outfile << endl;
    181217      po << hpn;
    182218    }
     
    184220      Histo fracmodok;
    185221      DataTable dtnoise;
    186       HProf hpn = m3d.ComputeNoisePk(*(arep_p),fracmodok,dtnoise,SCut);
     222      HProf hpn = m3d.ComputeNoisePk(*(arep_p),fracmodok,dtnoise,angscale,SCut);
    187223      HProf h1dnoise=arep_p->GetProjNoiseLevel();
    188224      HProf h1drep=arep_p->GetProjResponse();
Note: See TracChangeset for help on using the changeset viewer.