Changeset 3789 in Sophya for trunk/Cosmo/RadioBeam/fgndsub.cc
- Timestamp:
- Jun 27, 2010, 4:57:36 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.