Changeset 3789 in Sophya for trunk/Cosmo
- Timestamp:
- Jun 27, 2010, 4:57:36 PM (15 years ago)
- Location:
- trunk/Cosmo/RadioBeam
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/RadioBeam/applobe.cc
r3788 r3789 3 3 R. Ansari , C. Magneville - Juin 2010 4 4 5 Usage: applobe In3DPPFName Out3DPPFName 5 Usage: applobe In3DPPFName Out3DPPFName [ResmapleFactor=0.5,0.333...] [TargetBeamArcmin] 6 6 --------------------------------------------------------------- */ 7 7 … … 50 50 51 51 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; 53 53 return 1; 54 54 } … … 57 57 string outname = arg[2]; 58 58 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 59 72 int rc = 91; 60 73 … … 88 101 conv.setFrequency(Freq0MHz); 89 102 double lambda = conv.getLambda(); 90 Four2DResponse fresp(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda );103 Four2DResponse fresp(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda, lambda); 91 104 BeamEffect beam(fresp); 92 105 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); 95 123 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 99 124 outcube.Show(); 100 125 MeanSigma(outcube, mean, sigma); -
trunk/Cosmo/RadioBeam/calcpk.cc
r3787 r3789 20 20 #include "qhist.h" 21 21 #include "lobe.h" 22 #include "cubedef.h" 22 23 23 24 #include "histinit.h" … … 86 87 RandomGenerator rg; 87 88 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 89 94 HProf hp = pkc.ComputePk(0.,256); 90 95 { … … 92 97 POutPersist po(outname); 93 98 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; 94 103 } 95 104 tm.Split(" Done CalcP(k) "); -
trunk/Cosmo/RadioBeam/calcpk2.cc
r3788 r3789 61 61 if (narg>6) { 62 62 pixsignoise=atof(arg[6]); 63 fgaddnoise=true;63 if (pixsignoise>1.e-6) fgaddnoise=true; 64 64 } 65 65 66 66 bool fgcorrbeam=true; 67 double tbeamarcmin= 30.;67 double tbeamarcmin=15.; 68 68 if (narg>7) { 69 69 tbeamarcmin=atof(arg[7]); … … 119 119 conv.setFrequency(Freq0MHz); 120 120 double lambda = conv.getLambda(); 121 Four2DResponse arep(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda );121 Four2DResponse arep(2, InterfArrayDiametre/lambda, InterfArrayDiametre/lambda, lambda); 122 122 double DoL = 1.22/ArcminToRadian(tbeamarcmin); 123 123 Four2DResponse tbeam(2, DoL, DoL ); … … 128 128 cleaner.BeamCorrections(); 129 129 } 130 cout << " calcpk2[3.b] : calling cleaner.CleanNegatives() ... " << endl; 131 cleaner.CleanNegatives(); 130 132 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; 132 134 cleaner.CleanPointSources(nsigsrc); 133 135 } … … 150 152 RandomGenerator rg; 151 153 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); 152 158 153 159 HProf hp = pkc.ComputePk(0.,256); -
trunk/Cosmo/RadioBeam/cubedef.h
r3788 r3789 9 9 static sa_size_t NTheta=360; 10 10 static sa_size_t NPhi=360; 11 static sa_size_t NFreq = 2 00;11 static sa_size_t NFreq = 256; 12 12 13 13 static double Theta0Degre = 75.; // -> Delta = +30 deg … … 16 16 static double PhiSizeDegre = 30.; // Taille de la carte en degre selon delta (axe Y) 17 17 18 static double Freq0MHz = 8 40.; // premiere frequence19 static double FreqSizeMHz = 100.; // Taille de la carte en MHz (axe Z)18 static double Freq0MHz = 875.; // premiere frequence 19 static double FreqSizeMHz = 70.4; // Taille de la carte en MHz (axe Z) 20 20 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 24 static double ComovDA = 2060.; 25 static double XCellSizeMpc = 3.; 26 static double YCellSizeMpc = 3.; 27 static double ZCellSizeMpc = 1.5; 21 28 22 29 //--- Parametres des lois de puissance en frequence … … 33 40 34 41 // Parametres pour la reponse en Fourier de l'instrument : 35 static double InterfArrayDiametre = 64.;42 static double InterfArrayDiametre = 50.; // Taille du reseau en metres 36 43 37 44 /* -
trunk/Cosmo/RadioBeam/fgndsub.cc
r3788 r3789 33 33 beam.Correct2RefLobe(tbeam_, skycube_, dx_, dy_, freq0_, dfreq_); 34 34 cout << " ForegroundCleaner::BeamCorrections() done " << endl; 35 } 36 37 /* --Methode-- */ 38 int 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; 35 49 } 36 50 … … 82 96 // Outputs : synctemp, specidx (reconstructed foreground temperature and spectral index 83 97 // Return_Array : foreground subtracted LSS signal 84 {85 98 sa_size_t sz[5]; sz[0]=skycube_.SizeX(); sz[1]=skycube_.SizeY(); 86 99 synctemp.SetSize(2, sz); … … 92 105 // double freq0 : Frequence premier index en k (MHz) 93 106 // 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; 94 114 for(sa_size_t i=0; i<skycube_.SizeX(); i++) 95 115 for(sa_size_t j=0; j<skycube_.SizeY(); j++) { … … 97 117 s1=sx=sx2=sy=sxy=0.; 98 118 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); 101 120 double ttot=(r_8)(skycube_(i,j,k)); 102 121 if (ttot < 1.e-5) continue; … … 108 127 double alpha = (s1*sxy-sx*sy)/(s1*sx2-sx*sx); 109 128 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)) 111 149 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; 113 151 synctemp(i,j) = T0; 114 152 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 } 118 161 } 119 162 } 163 cout << " ForegroundCleaner::extractLSSCube() - NbNan alpha/beta=" << nbinfini << " NbBAD =" << nbbad << endl; 120 164 return omap; 121 165 } 122 166 123 } -
trunk/Cosmo/RadioBeam/fgndsub.h
r3788 r3789 27 27 ForegroundCleaner(Four2DResponse& arrep, Four2DResponse& tbeam, TArray< TF >& skycube); 28 28 void BeamCorrections(); 29 int CleanNegatives(TF seuil=1.e-6); 29 30 int CleanPointSources(double nsigmas=5.); 30 31 TArray< TF > extractLSSCube(TArray< TF >& synctemp, TArray< TF >& specidx); -
trunk/Cosmo/RadioBeam/lobe.cc
r3788 r3789 6 6 7 7 8 #include "fftwserver.h" 8 #include "fftwserver.h" 9 #include "matharr.h" 9 10 #include "ctimer.h" 10 11 … … 38 39 conv.setFrequency(f0+kz*df); 39 40 fresp_.setLambda(conv.getLambda()); 41 // cout << " DEBUG*" << kz << " lambda=" << conv.getLambda() << " lambda_ratio_=" << fresp_.lambda_ratio_ << endl; 40 42 ApplyLobeK2D(fresp_, fourAmp, dkx, dky); 41 43 ffts.FFTBackward(fourAmp, slice, true); 42 44 if (kz%20==0) cout << "BeamEffect::ApplyLobe3D() done kz=" << kz << " / a.SizeZ()=" << a.SizeZ() << endl; 43 45 } 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; 44 52 return; 45 53 } … … 64 72 conv.setFrequency(f0+kz*df); 65 73 fresp_.setLambda(conv.getLambda()); 66 Four2DRespRatio rratio( fresp_, rep);74 Four2DRespRatio rratio(rep, fresp_); 67 75 ApplyLobeK2D(rratio, fourAmp, dkx, dky); 68 76 ffts.FFTBackward(fourAmp, slice, true); 69 77 if (kz%20==0) cout << "BeamEffect::Correct2RefLobe() done kz=" << kz << " / a.SizeZ()=" << a.SizeZ() << endl; 70 78 } 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; 71 85 return; 72 86 } … … 74 88 /* --Methode-- */ 75 89 void BeamEffect::ApplyLobeK2D(Four2DResponse& rep, TArray< complex<TF> >& fourAmp, double dkx, double dky) 76 // dx, dy en radians, lambda en metres77 90 { 78 91 double kxx, kyy; -
trunk/Cosmo/RadioBeam/makefile
r3788 r3789 61 61 $(CXXLINK) -o Objs/syncube Objs/syncube.o $(PKGOLIST) $(SOPHYAEXTSLBLIST) 62 62 63 Objs/syncube.o : syncube.cc 63 Objs/syncube.o : syncube.cc $(PKGHLIST) 64 64 $(CXXCOMPILE) -o Objs/syncube.o syncube.cc 65 65 -
trunk/Cosmo/RadioBeam/mdish.cc
r3788 r3789 9 9 //-------------------------------------------------- 10 10 // Constructor 11 Four2DResponse::Four2DResponse(int typ, double dx, double dy )11 Four2DResponse::Four2DResponse(int typ, double dx, double dy, double lambda) 12 12 : typ_(typ), dx_((dx>1.e-3)?dx:1.), dy_((dy>1.e-3)?dy:1.) 13 13 { 14 setLambdaRef( );15 setLambda( );14 setLambdaRef(lambda); 15 setLambda(lambda); 16 16 } 17 17 … … 78 78 // -- Four2DRespRatio : rapport de la reponse entre deux objets Four2DResponse 79 79 //--------------------------------------------------------------- 80 Four2DRespRatio::Four2DRespRatio(Four2DResponse& a, Four2DResponse& b )81 : Four2DResponse(0, a.D(), a.D()), a_(a), b_(b) 80 Four2DRespRatio::Four2DRespRatio(Four2DResponse& a, Four2DResponse& b, double divzthr) 81 : Four2DResponse(0, a.D(), a.D()), a_(a), b_(b), divzthr_(divzthr) 82 82 { 83 83 } … … 87 87 double ra = a_.Value(kx,ky); 88 88 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 } 90 93 return (ra/rb); 91 94 } -
trunk/Cosmo/RadioBeam/mdish.h
r3788 r3789 27 27 public: 28 28 // 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.); 30 30 31 31 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_; } 33 34 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); } 35 37 36 38 inline void setLambdaRef(double lambda=1.) 37 39 { lambdaref_ = lambda; } 38 40 inline void setLambda(double lambda=1.) 39 { lambda_ = lambda; lambda_ratio_ = lambdaref_/lambda_; }41 { lambda_ = lambda; lambda_ratio_ = lambda_/lambdaref_; } 40 42 41 43 // Return the 2D response for wave vector (kx,ky) … … 70 72 class Four2DRespRatio : public Four2DResponse { 71 73 public: 72 Four2DRespRatio(Four2DResponse& a, Four2DResponse& b );74 Four2DRespRatio(Four2DResponse& a, Four2DResponse& b, double divzthr=1.e-1); 73 75 // Return the ratio a.Value(kx,ky) / b.Value(kx, ky) - with protection against divide by zero 74 76 virtual double Value(double kx, double ky); 75 77 Four2DResponse& a_; 76 78 Four2DResponse& b_; 79 double divzthr_; 77 80 }; 78 81 -
trunk/Cosmo/RadioBeam/subtractradsrc.cmd
r3787 r3789 8 8 ### Step 1/ Produce an LSS data cube with appropriate size and redshift using SimLSS 9 9 # 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 210 csh> ~/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 11 11 # 1.b/ Change the X and Z axis of the cube to adapt it to RadioBeam package convention 12 12 # SimLSS output : the radial (redshift) direction along X axis of the cube (TArray) … … 15 15 16 16 csh> cat > racube.pic 17 set f map3dz06B17 set f lssz056 18 18 readfits ${f}_r.fits 19 19 rename ${f}_r map … … 30 30 saveppf omap lsscube.ppf 31 31 32 csh> spiapp -term -exec lsscube.ppf32 csh> spiapp -term -exec racube.pic 33 33 34 34 ## Step 2/ Produce synchrotron and radio source sky cubes (cube unit is Temparature- Kelvin) … … 41 41 openppf syncube.ppf 42 42 openppf nvsscube.ppf 43 expmeansig syncube val44 expmeansig nvsscube val43 # expmeansig syncube val 44 # expmeansig nvsscube val 45 45 c++exec TArray<r_4> fgndcube = syncube+nvsscube; KeepObj(fgndcube); 46 46 print fgndcube 47 expmeansig fgndcube val47 # expmeansig fgndcube val 48 48 saveppf fgndcube fgndcube.ppf 49 49 … … 53 53 csh> ./Objs/applobe fgndcube.ppf fgndcube_lobe.ppf 54 54 csh> ./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 56 csh> ./Objs/applobe lsscube_lobe.ppf lsscube_corlobe.ppf 1 30 57 csh> ./Objs/applobe fgndcube_lobe.ppf fgndcube_corlobe.ppf 1 30 55 58 56 59 ### Step 4/ Compute power spectra … … 58 61 ## Foreground maps are in temperature 59 62 ## 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 mK63 ## Tsys ~ 50 K , DeltaFreq ~ 0.275 MHz , t_obs ~ 1 day ~ 80 000 s. 64 ## sigma_noise ~ 0.35 mK 62 65 # 4.a/ LSS power spectrum without noise 63 66 csh> ./Objs/calcpk lsscube.ppf lsspk.ppf 0.2 64 67 # and with noise 65 csh> ./Objs/calcpk lsscube.ppf lsspkwn.ppf 0.2 0. 2568 csh> ./Objs/calcpk lsscube.ppf lsspkwn.ppf 0.2 0.35 66 69 # with the lobe effect 67 70 csh> ./Objs/calcpk lsscube_lobe.ppf lsspklobe.ppf 0.2 71 csh> ./Objs/calcpk lsscube_corlobe.ppf lsspkcorlobe.ppf 0.2 72 68 73 # 4.b/ Foreground power spectrum 69 74 csh> ./Objs/calcpk fgndcube.ppf fgndpk.ppf 1000 70 75 csh> ./Objs/calcpk fgndcube_lobe.ppf fgndpklobe.ppf 1000 76 csh> ./Objs/calcpk fgndcube_corlobe.ppf fgndpkcorlobe.ppf 1000 71 77 72 78 # 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. 2574 # 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. 2579 csh> ./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 81 csh> ./Objs/calcpk2 lsscube_lobe.ppf 0.2 fgndcube_lobe.ppf 1000 subpklobe.ppf 0.35 30. 3. 76 82 77 83 ### Step 5 / Check the results using spiapp
Note:
See TracChangeset
for help on using the changeset viewer.