Changeset 3789 in Sophya for trunk


Ignore:
Timestamp:
Jun 27, 2010, 4:57:36 PM (15 years ago)
Author:
ansari
Message:

Corrections diverses, Reza 27/06/2010

Location:
trunk/Cosmo/RadioBeam
Files:
11 edited

Legend:

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

    r3788 r3789  
    33    R. Ansari , C. Magneville - Juin 2010
    44
    5   Usage: applobe In3DPPFName Out3DPPFName
     5  Usage: applobe In3DPPFName Out3DPPFName [ResmapleFactor=0.5,0.333...] [TargetBeamArcmin]
    66---------------------------------------------------------------  */
    77
     
    5050
    5151  if (narg < 3) {
    52     cout << "Usage: applobe In3DPPFName Out3DPPFName \n" << endl;
     52    cout << "Usage: applobe In3DPPFName Out3DPPFName [ResmapleFactor=0.5,0.333...] [TargetBeamArcmin]\n" << endl;
    5353    return 1;
    5454  }
     
    5757  string outname = arg[2];
    5858  string inname = arg[1];
     59  bool fgresample=false;
     60  double fresamp=1.;
     61  if (narg>3) {
     62    fresamp=atof(arg[3]);
     63    if ((fabs(fresamp)>1.e-2)&&(fabs(fresamp-1.)>1.e-2))  fgresample=true;
     64  }
     65  bool fgcorrbeam=false;
     66  double tbeamarcmin=15.;
     67  if (narg>4) {
     68    tbeamarcmin=atof(arg[4]);
     69    if (tbeamarcmin>1.e-3)  fgcorrbeam=true;
     70  }
     71
    5972  int rc = 91;
    6073
     
    88101    conv.setFrequency(Freq0MHz);
    89102    double lambda = conv.getLambda();
    90     Four2DResponse fresp(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda);
     103    Four2DResponse fresp(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda, lambda);   
    91104    BeamEffect beam(fresp);
    92105
    93     cout << "applobe[3]: calling ApplyLobe3D() ... " << endl;
    94     beam.ApplyLobe3D(incube, dx, dy, Freq0MHz, dfreq);
     106    if (fgcorrbeam) {
     107      double DoL = 1.22/ArcminToRadian(tbeamarcmin);
     108      Four2DResponse tbeam(2, DoL, DoL );
     109      cout << "applobe[3]: calling Correct2RefLobe() with target beam:" << tbeamarcmin
     110           << " arcmin -> D/Lambda=" << DoL << endl;
     111      beam.Correct2RefLobe(tbeam, incube, dx, dy, Freq0MHz, dfreq);
     112    }
     113    else {
     114      cout << "applobe[3]: calling ApplyLobe3D() ... " << endl;
     115      beam.ApplyLobe3D(incube, dx, dy, Freq0MHz, dfreq);
     116    }
     117    TArray< r_4 > outcube;
     118    if (fgresample) {
     119      cout << "applobe[4]: calling ReSample(incube," << fresamp << "," << ",1.) ... " << endl;
     120      outcube.Share(beam.ReSample(incube, fresamp, fresamp, 1.));
     121    }
     122    else outcube.Share(incube);
    95123
    96     cout << "applobe[4]: calling ReSample(incube, 0.5, 0.5, 1.) ... " << endl;
    97     TArray< r_4 > outcube = beam.ReSample(incube, 0.5, 0.5, 1.);
    98    
    99124    outcube.Show();
    100125    MeanSigma(outcube, mean, sigma);
  • trunk/Cosmo/RadioBeam/calcpk.cc

    r3787 r3789  
    2020#include "qhist.h"
    2121#include "lobe.h"
     22#include "cubedef.h"
    2223
    2324#include "histinit.h"
     
    8687    RandomGenerator rg;
    8788    Four3DPk pkc(four3d, rg);
    88    
     89    double dkxmpc = DeuxPI/(double)inmap.SizeX()/XCellSizeMpc;
     90    double dkympc = DeuxPI/(double)inmap.SizeY()/YCellSizeMpc;
     91    double dkzmpc = DeuxPI/(double)inmap.SizeZ()/ZCellSizeMpc;
     92    pkc.SetCellSize(dkxmpc, dkympc, dkzmpc);
     93
    8994    HProf hp = pkc.ComputePk(0.,256);
    9095    {
     
    9297      POutPersist po(outname);
    9398      po << hp;
     99      outname = "f3d_" + outname;
     100      cout << "calcpk[4.b] : writing four3d to PPF file  " << outname << endl;
     101      POutPersist pof(outname);
     102      pof << four3d;
    94103    }
    95104    tm.Split(" Done CalcP(k) ");   
  • trunk/Cosmo/RadioBeam/calcpk2.cc

    r3788 r3789  
    6161    if (narg>6) {
    6262      pixsignoise=atof(arg[6]);
    63       fgaddnoise=true;
     63      if (pixsignoise>1.e-6)  fgaddnoise=true;
    6464    }
    6565   
    6666    bool fgcorrbeam=true;
    67     double tbeamarcmin=30.;
     67    double tbeamarcmin=15.;
    6868    if (narg>7) {
    6969      tbeamarcmin=atof(arg[7]);
     
    119119    conv.setFrequency(Freq0MHz);
    120120    double lambda = conv.getLambda();
    121     Four2DResponse arep(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda);
     121    Four2DResponse arep(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda, lambda);
    122122    double DoL = 1.22/ArcminToRadian(tbeamarcmin);
    123123    Four2DResponse tbeam(2, DoL, DoL );
     
    128128      cleaner.BeamCorrections();
    129129    }
     130    cout << " calcpk2[3.b] : calling cleaner.CleanNegatives() ... " << endl;
     131    cleaner.CleanNegatives();
    130132    if (fgclnsrc) {
    131       cout << "calcpk2[3.b] : calling cleaner.CleanPointSources() with threshold NSigma=" << nsigsrc  << endl;
     133      cout << "calcpk2[3.c] : calling cleaner.CleanPointSources() with threshold NSigma=" << nsigsrc  << endl;
    132134      cleaner.CleanPointSources(nsigsrc);
    133135    }
     
    150152    RandomGenerator rg;
    151153    Four3DPk pkc(four3d, rg);
     154    double dkxmpc = DeuxPI/(double)exlss.SizeX()/XCellSizeMpc;
     155    double dkympc = DeuxPI/(double)exlss.SizeY()/YCellSizeMpc;
     156    double dkzmpc = DeuxPI/(double)exlss.SizeZ()/ZCellSizeMpc;
     157    pkc.SetCellSize(dkxmpc, dkympc, dkzmpc);
    152158   
    153159    HProf hp = pkc.ComputePk(0.,256);
  • trunk/Cosmo/RadioBeam/cubedef.h

    r3788 r3789  
    99static sa_size_t NTheta=360;
    1010static sa_size_t NPhi=360;
    11 static sa_size_t NFreq = 200;
     11static sa_size_t NFreq = 256;
    1212
    1313static double Theta0Degre = 75.;  // -> Delta = +30 deg
     
    1616static double PhiSizeDegre = 30.;    // Taille de la carte en degre selon delta (axe Y)
    1717
    18 static double Freq0MHz = 840.;       // premiere frequence
    19 static double FreqSizeMHz = 100.;    // Taille de la carte en MHz (axe Z)
     18static double Freq0MHz = 875.;       // premiere frequence
     19static double FreqSizeMHz = 70.4;    // Taille de la carte en MHz (axe Z)
    2020
     21/* z = 0.56, freq_center=910 MHz , dA_comov ~= 2060 Mpc , 
     22       5 arcmin -> 3 Mpc , 0.275 MHz -> 3 Mpc  (H(ze) ~ 94 km/s/Mpc */
     23// Taille de cellule pour le calcul du spectre de puissance 3D
     24static double ComovDA = 2060.;
     25static double XCellSizeMpc = 3.;
     26static double YCellSizeMpc = 3.;
     27static double ZCellSizeMpc = 1.5;
    2128
    2229//---  Parametres des lois de puissance en frequence
     
    3340
    3441// Parametres pour la reponse en Fourier de l'instrument :
    35 static double InterfArrayDiametre = 64.;
     42static double InterfArrayDiametre = 50.;  // Taille du reseau en metres
    3643
    3744/*
  • trunk/Cosmo/RadioBeam/fgndsub.cc

    r3788 r3789  
    3333  beam.Correct2RefLobe(tbeam_, skycube_, dx_, dy_, freq0_, dfreq_);
    3434  cout << " ForegroundCleaner::BeamCorrections() done " << endl;
     35}
     36
     37/* --Methode-- */
     38int ForegroundCleaner::CleanNegatives(TF seuil)
     39{
     40  sa_size_t nneg = 0.;
     41  for(sa_size_t kz=0; kz<skycube_.SizeZ(); kz++)
     42    for(sa_size_t ky=0; ky<skycube_.SizeY(); ky++)
     43      for(sa_size_t kx=0; kx<skycube_.SizeX(); kx++)
     44        if (skycube_(kx, ky, kz) < seuil)  {
     45          nneg++; skycube_(kx, ky, kz)=seuil;
     46        }
     47  cout << " ForegroundCleaner::CleanNegatives " << nneg << " sky-pixels <" << seuil << " changed to" << seuil << endl;
     48  return (int)nneg;
    3549}
    3650
     
    8296// Outputs : synctemp, specidx  (reconstructed foreground temperature and spectral index
    8397// Return_Array : foreground subtracted LSS signal
    84 {
    8598  sa_size_t sz[5];   sz[0]=skycube_.SizeX();  sz[1]=skycube_.SizeY();
    8699  synctemp.SetSize(2, sz);
     
    92105  // double freq0 : Frequence premier index en k (MHz)
    93106  // double dfreq :   // largeur en frequence de chaque plan (Mhz) 
     107  for(sa_size_t k=0; k<skycube_.SizeZ(); k++) 
     108    vlnf(k)=log((double)k*dfreq_+freq0_);
     109
     110  sa_size_t nbinfini=0;
     111  sa_size_t nbbad=0;
     112  sa_size_t imodprt=skycube_.SizeX()/6;
     113  sa_size_t jmodprt=skycube_.SizeY()/6;
    94114  for(sa_size_t i=0; i<skycube_.SizeX(); i++)
    95115    for(sa_size_t j=0; j<skycube_.SizeY(); j++)  {
     
    97117      s1=sx=sx2=sy=sxy=0.;
    98118      for(sa_size_t k=0; k<skycube_.SizeZ(); k++)  {
    99         double lnf=log((double)k*dfreq_+freq0_);
    100         vlnf(k)=lnf;
     119        double lnf = vlnf(k);
    101120        double ttot=(r_8)(skycube_(i,j,k));
    102121        if (ttot < 1.e-5) continue;
     
    108127      double alpha = (s1*sxy-sx*sy)/(s1*sx2-sx*sx);
    109128      double T0 = exp(beta+alpha*vlnf(0));
    110       if ((i%16==0)&&(j%27==0))
     129
     130      bool fgnan = false;
     131      if (!isfinite(alpha)||(!isfinite(beta))) {
     132        cout << "extractLSSCube[" << i << "," << j << "]/ Not finite alpha, beta - (mapsync="
     133             << skycube_(i,j,0) << " ... " << skycube_(i,j,skycube_.SizeZ()-1) << ")" << endl;
     134        alpha=beta=-999.;
     135        fgnan = true;  nbinfini++;
     136      }
     137      else {
     138        double axp1 = beta+alpha*vlnf(0);
     139        double axp2 = beta+alpha*vlnf(vlnf.Size()-1);
     140       
     141        if ((axp1<-70.)||(axp1>70.)||(axp2<-70.)||(axp2>70.)) {
     142        cout << "extractLSSCube[" << i << "," << j << "] BAD alpha=" << alpha
     143             << " beta=" << beta << " T0=" << T0 << " - (mapsync="
     144             << skycube_(i,j,0) << " ... " << skycube_(i,j,skycube_.SizeZ()-1) << ")" << endl;
     145        fgnan = true;  nbbad++;
     146        }
     147      }
     148      if ((i%imodprt==0)&&(j%jmodprt==0))
    111149        cout << "extractLSSCube[" << i << "," << j << "]: T0=" << T0 << " alpha=" << alpha
    112              << " (mapsync=" << skycube_(i,j,0) << " ... " << skycube_(i,j,125) << ")" << endl;
     150             << " (mapsync=" << skycube_(i,j,0) << " ... " << skycube_(i,j,skycube_.SizeZ()-1) << ")" << endl;
    113151      synctemp(i,j) = T0;
    114152      specidx(i,j) = alpha;
    115       for(sa_size_t k=0; k<skycube_.SizeZ(); k++) {
    116         r_4 fittedtemp = (r_4)(exp(beta+alpha*vlnf(k)));
    117         omap(i,j,k) = skycube_(i,j,k)-fittedtemp;
     153      if (fgnan) {
     154        for(sa_size_t k=0; k<skycube_.SizeZ(); k++)   omap(i,j,k) = 0.;
     155      }
     156      else {
     157        for(sa_size_t k=0; k<skycube_.SizeZ(); k++) {
     158          r_4 fittedtemp = (r_4)(exp(beta+alpha*vlnf(k)));
     159          omap(i,j,k) = skycube_(i,j,k)-fittedtemp;
     160        }
    118161      }
    119162    }
     163  cout << " ForegroundCleaner::extractLSSCube() - NbNan alpha/beta=" << nbinfini << " NbBAD =" << nbbad << endl;
    120164  return omap;
    121165}
    122166
    123 }
  • trunk/Cosmo/RadioBeam/fgndsub.h

    r3788 r3789  
    2727  ForegroundCleaner(Four2DResponse& arrep, Four2DResponse& tbeam, TArray< TF >& skycube);
    2828  void BeamCorrections();
     29  int CleanNegatives(TF seuil=1.e-6);
    2930  int CleanPointSources(double nsigmas=5.);
    3031  TArray< TF > extractLSSCube(TArray< TF >& synctemp, TArray< TF >& specidx);
  • trunk/Cosmo/RadioBeam/lobe.cc

    r3788 r3789  
    66
    77
    8 #include "fftwserver.h"   
     8#include "fftwserver.h"
     9#include "matharr.h"   
    910#include "ctimer.h"   
    1011
     
    3839    conv.setFrequency(f0+kz*df);
    3940    fresp_.setLambda(conv.getLambda());
     41    //    cout << " DEBUG*" << kz << " lambda=" << conv.getLambda() << " lambda_ratio_=" << fresp_.lambda_ratio_ << endl;
    4042    ApplyLobeK2D(fresp_, fourAmp, dkx, dky);
    4143    ffts.FFTBackward(fourAmp, slice, true);
    4244    if (kz%20==0)  cout << "BeamEffect::ApplyLobe3D() done kz=" << kz << " / a.SizeZ()=" << a.SizeZ() << endl;
    4345  }
     46  double mean, sigma;
     47  TF min, max;
     48  a.MinMax(min, max);
     49  MeanSigma(a, mean, sigma);
     50  cout << " BeamEffect::ApplyLobe3D() - Result Min=" << min << " Max=" << max
     51       << " Mean=" << mean << " Sigma=" << sigma << endl;
    4452  return;
    4553}
     
    6472    conv.setFrequency(f0+kz*df);
    6573    fresp_.setLambda(conv.getLambda());
    66     Four2DRespRatio rratio(fresp_, rep);
     74    Four2DRespRatio rratio(rep, fresp_);
    6775    ApplyLobeK2D(rratio, fourAmp, dkx, dky);
    6876    ffts.FFTBackward(fourAmp, slice, true);
    6977    if (kz%20==0)  cout << "BeamEffect::Correct2RefLobe() done kz=" << kz << " / a.SizeZ()=" << a.SizeZ() << endl;
    7078  }
     79  double mean, sigma;
     80  TF min, max;
     81  a.MinMax(min, max);
     82  MeanSigma(a, mean, sigma);
     83  cout << " BeamEffect::Correct2RefLobe() - Result Min=" << min << " Max=" << max
     84       << " Mean=" << mean << " Sigma=" << sigma << endl;
    7185  return;
    7286}
     
    7488/* --Methode-- */
    7589void BeamEffect::ApplyLobeK2D(Four2DResponse& rep, TArray< complex<TF> >& fourAmp, double dkx, double dky)
    76 //  dx, dy en radians, lambda en metres
    7790{
    7891  double kxx, kyy;
  • trunk/Cosmo/RadioBeam/makefile

    r3788 r3789  
    6161        $(CXXLINK) -o Objs/syncube Objs/syncube.o $(PKGOLIST) $(SOPHYAEXTSLBLIST)
    6262
    63 Objs/syncube.o : syncube.cc
     63Objs/syncube.o : syncube.cc  $(PKGHLIST)
    6464        $(CXXCOMPILE) -o Objs/syncube.o syncube.cc
    6565
  • trunk/Cosmo/RadioBeam/mdish.cc

    r3788 r3789  
    99//--------------------------------------------------
    1010// Constructor
    11 Four2DResponse::Four2DResponse(int typ, double dx, double dy)
     11Four2DResponse::Four2DResponse(int typ, double dx, double dy, double lambda)
    1212  : typ_(typ), dx_((dx>1.e-3)?dx:1.), dy_((dy>1.e-3)?dy:1.)
    1313{
    14   setLambdaRef();
    15   setLambda();
     14  setLambdaRef(lambda);
     15  setLambda(lambda);
    1616}
    1717
     
    7878// -- Four2DRespRatio : rapport de la reponse entre deux objets Four2DResponse
    7979//---------------------------------------------------------------
    80 Four2DRespRatio::Four2DRespRatio(Four2DResponse& a, Four2DResponse& b)
    81   : Four2DResponse(0, a.D(), a.D()), a_(a), b_(b) 
     80Four2DRespRatio::Four2DRespRatio(Four2DResponse& a, Four2DResponse& b, double divzthr)
     81  : Four2DResponse(0, a.D(), a.D()), a_(a), b_(b), divzthr_(divzthr)
    8282{
    8383}
     
    8787  double ra = a_.Value(kx,ky);
    8888  double rb = b_.Value(kx,ky);
    89   if (rb<1.e-19) rb = 1.e-19;
     89  if (rb<divzthr_) {
     90    if (ra<rb)  return 0.;
     91    else rb=divzthr_;
     92  }
    9093  return (ra/rb);
    9194}
  • trunk/Cosmo/RadioBeam/mdish.h

    r3788 r3789  
    2727public:
    2828  // On donne dx=D/lambda=Dx/lambda , dy=Dy/lambda
    29   Four2DResponse(int typ, double dx, double dy);
     29  Four2DResponse(int typ, double dx, double dy, double lambda=1.);
    3030
    3131  Four2DResponse(Four2DResponse const& a)
    32   { typ_ = a.typ_; dx_=a.dx_; dy_=a.dy_; }
     32  { typ_ = a.typ_; dx_=a.dx_; dy_=a.dy_; lambdaref_=a.lambdaref_;
     33    lambda_=a.lambda_; lambda_ratio_=a.lambda_ratio_; }
    3334  Four2DResponse& operator=(Four2DResponse const& a)
    34   { typ_ = a.typ_; dx_=a.dx_; dy_=a.dy_; return (*this); }
     35  { typ_ = a.typ_; dx_=a.dx_; dy_=a.dy_; lambdaref_=a.lambdaref_;
     36    lambda_=a.lambda_; lambda_ratio_=a.lambda_ratio_;  return (*this); }
    3537
    3638  inline void setLambdaRef(double lambda=1.)
    3739  { lambdaref_ = lambda; }
    3840  inline void setLambda(double lambda=1.)
    39   { lambda_ = lambda;  lambda_ratio_ = lambdaref_/lambda_; }
     41  { lambda_ = lambda;   lambda_ratio_ = lambda_/lambdaref_; }   
    4042 
    4143  // Return the 2D response for wave vector (kx,ky)
     
    7072class Four2DRespRatio : public  Four2DResponse {
    7173public:
    72   Four2DRespRatio(Four2DResponse& a, Four2DResponse& b);
     74  Four2DRespRatio(Four2DResponse& a, Four2DResponse& b, double divzthr=1.e-1);
    7375  // Return the ratio a.Value(kx,ky) / b.Value(kx, ky) - with protection against divide by zero
    7476  virtual double Value(double kx, double ky);
    7577  Four2DResponse& a_;
    7678  Four2DResponse& b_;
     79  double divzthr_;
    7780};
    7881
  • trunk/Cosmo/RadioBeam/subtractradsrc.cmd

    r3787 r3789  
    88### Step 1/ Produce an LSS data cube  with appropriate size and redshift using SimLSS
    99# 1.a/ Run SimLSS
    10 csh> ~/Objs/exe/cmvginit3df -a -1 -2 -C -G 0. -F 0 -x 360,4 -y 360,4 -z 128,5 -Z 0.6 -8 1. -n 10000 -O 0,2 -o map3dz06B -T 2
     10csh> ~/Objs/exe/cmvginit3df -a -1 -2 -C -G 0. -F 0 -x 360,3 -y 360,3 -z 256,1.5 -Z 0.56 -8 1. -n 10000 -O 0,2 -o lssz056 -T 2
    1111# 1.b/ Change the X and Z axis of the cube to adapt it to RadioBeam package convention
    1212#  SimLSS output : the radial (redshift) direction along X axis of the cube (TArray)
     
    1515
    1616csh> cat > racube.pic
    17 set f map3dz06B
     17set f lssz056
    1818readfits ${f}_r.fits
    1919rename ${f}_r map
     
    3030saveppf omap lsscube.ppf
    3131
    32 csh> spiapp -term -exec lsscube.ppf
     32csh> spiapp -term -exec racube.pic
    3333
    3434## Step 2/ Produce synchrotron and radio source sky cubes  (cube unit is Temparature- Kelvin)
     
    4141openppf syncube.ppf
    4242openppf nvsscube.ppf
    43 expmeansig syncube val
    44 expmeansig nvsscube val
     43# expmeansig syncube val
     44# expmeansig nvsscube val
    4545c++exec TArray<r_4> fgndcube = syncube+nvsscube; KeepObj(fgndcube);
    4646print fgndcube
    47 expmeansig fgndcube val
     47# expmeansig fgndcube val
    4848saveppf fgndcube fgndcube.ppf
    4949
     
    5353csh> ./Objs/applobe fgndcube.ppf fgndcube_lobe.ppf
    5454csh> ./Objs/applobe lsscube.ppf lsscube_lobe.ppf
     55## Step 3.b/ Correct for the lobe effect by bringing all to a beam of 30 arcmin
     56csh> ./Objs/applobe lsscube_lobe.ppf lsscube_corlobe.ppf 1 30
     57csh> ./Objs/applobe fgndcube_lobe.ppf fgndcube_corlobe.ppf 1 30
    5558
    5659### Step 4/ Compute power spectra
     
    5861## Foreground maps are in temperature
    5962## Noise fluctuations Sigma^2 ~ T_sys^2 / t_obs * DeltaFreq
    60 ## Tsys ~ 50 K , DeltaFreq ~ 0.5 MHz , t_obs ~ 1 day ~ 80 000 s.
    61 ## sigma_noise ~ 0.25 mK
     63## Tsys ~ 50 K , DeltaFreq ~ 0.275 MHz , t_obs ~ 1 day ~ 80 000 s.
     64## sigma_noise ~ 0.35 mK
    6265# 4.a/ LSS power spectrum  without noise
    6366csh> ./Objs/calcpk lsscube.ppf lsspk.ppf 0.2
    6467# and with noise 
    65 csh> ./Objs/calcpk lsscube.ppf lsspkwn.ppf 0.2 0.25
     68csh> ./Objs/calcpk lsscube.ppf lsspkwn.ppf 0.2 0.35
    6669#  with the lobe effect
    6770csh> ./Objs/calcpk lsscube_lobe.ppf lsspklobe.ppf 0.2 
     71csh> ./Objs/calcpk lsscube_corlobe.ppf lsspkcorlobe.ppf 0.2 
     72
    6873# 4.b/ Foreground power spectrum
    6974csh> ./Objs/calcpk fgndcube.ppf fgndpk.ppf 1000
    7075csh> ./Objs/calcpk fgndcube_lobe.ppf fgndpklobe.ppf 1000
     76csh> ./Objs/calcpk fgndcube_corlobe.ppf fgndpkcorlobe.ppf 1000
    7177
    7278# 4.c/ Extract LSS P(k) from Foreground+LSS+noise , after cleaning/subtraction without beam
    73 csh> ./Objs/calcpk2 lsscube.ppf 0.2 fgndcube.ppf 1000 subpk.ppf 0.25
    74 # 4.d / Extract LSS P(k) from Foreground+LSS+noise and beam effect
    75 csh> ./Objs/calcpk2 lsscube_lobe.ppf 0.2 fgndcube_lobe.ppf 1000 subpklobe.ppf 0.25
     79csh> ./Objs/calcpk2 lsscube.ppf 0.2 fgndcube.ppf 1000 subpk.ppf 0.35 0. 0.
     80# 4.d / Extract LSS P(k) from Foreground+LSS+noise and beam effect - correcting for beam to 30 arcmin
     81csh> ./Objs/calcpk2 lsscube_lobe.ppf 0.2 fgndcube_lobe.ppf 1000 subpklobe.ppf 0.35 30. 3.
    7682
    7783### Step 5 / Check the results using spiapp
Note: See TracChangeset for help on using the changeset viewer.