Changeset 3825 in Sophya for trunk/Cosmo/RadioBeam/srcat2cube.cc


Ignore:
Timestamp:
Aug 2, 2010, 7:29:48 PM (15 years ago)
Author:
ansari
Message:

modifs et ajout de programme pour traitement cartes GSM (Global Sky Model), Reza 02/08/2010

File:
1 edited

Legend:

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

    r3785 r3825  
    7272    sa_size_t idxd = nvss.IndexNom("C_DEJ2000");
    7373    sa_size_t idxf = nvss.IndexNom("S1_4");
    74     cout << " ... Index Alpha: " << idxa << " Delta: " << idxd << " Flux: " << idxf << endl;
     74    sa_size_t idxmajax = nvss.IndexNom("MajAxis");
     75    sa_size_t idxminax = nvss.IndexNom("MinAxis");
     76
     77    cout << " ... Index Alpha: " << idxa << " Delta: " << idxd << " Flux: " << idxf
     78         << " MajAxis: " << idxmajax << " MajAxis: " << idxminax << endl;
    7579
    7680    TArray<r_4> omap(NPhi,NTheta);
     
    8387
    8488    sa_size_t srccnt=0;
     89    sa_size_t extendedsrccnt=0;
     90
    8591    double meanflx=0.;
    8692    double flxmin=9.e99;
     
    8995    double dtet = ThetaSizeDegre/(double)NTheta;
    9096    double dphi = PhiSizeDegre/(double)NPhi;
     97    double mpixsizarcmin = 0.5*(dtet+dphi)*60.;
     98
    9199    for (sa_size_t n=0; n<nvss.NRows(); n++)  {
    92100      r_8* pline=nvss.GetLineD(n);
     
    94102      double delta=pline[idxd];  // delta en degre
    95103      double flx=pline[idxf]*1.e-3;  // flux en Jy
     104      double srcszarcmin=0.5*(pline[idxmajax]+pline[idxminax])/60.;  // taille (extension de la source en arcmin
     105      if (srcszarcmin<1.) srcszarcmin=1.;
    96106      double tet = 90.-delta;
    97107      double phi = alpha;
     
    100110      if ((i<0)||(i>=omap.SizeX()))  continue;
    101111      if ((j<0)||(j>=omap.SizeY()))  continue;
    102       omap(i,j) += flx;
     112      double srat = (4.*srcszarcmin*srcszarcmin)/(mpixsizarcmin*mpixsizarcmin);
     113      if (srcszarcmin<(0.5*mpixsizarcmin)) {   // Toute l'energie dans un seul pixel
     114        omap(i,j) += flx*srat;
     115      }
     116      else {  // on repartit l'energie de la source dans plusieurs pixels
     117        extendedsrccnt++;
     118        for(int bi=-1;bi<=1;bi++) {
     119          for(sa_size_t bj=-1; bj<=1; bj++) {
     120            sa_size_t ii = (phi-phi0+bi*srcszarcmin/60.)/dphi;
     121            sa_size_t jj = (tet-tet0+bj*srcszarcmin/60.)/dtet;
     122            if ((ii<0)||(ii>=omap.SizeX()))  continue;
     123            if ((jj<0)||(jj>=omap.SizeY()))  continue;     
     124            if ((bi==0)&&(bj==0))  omap(ii,jj) += flx*srat*0.3;
     125            else omap(ii,jj) += flx*srat*0.7/8.;
     126          }
     127        }
     128      }
    103129      srccnt++;   meanflx+=flx;
    104130      if (flx<flxmin) flxmin=flx;
     
    108134    cout << "srccat2cube[3]: Output rectangular map computed " << endl;
    109135    meanflx /= (double)srccnt;
    110     cout << " SrcCount in map: " << srccnt << " -> meanFlx=" << meanflx << " min=" << flxmin
     136    cout << " SrcCount in map: " << srccnt << " extended=" << extendedsrccnt
     137         << " -> meanFlx=" << meanflx << " min=" << flxmin
    111138         << " max=" << flxmax << " Jy" << endl;
    112139
    113140    double mean, sigma;
     141    r_4 mintemp, maxtemp;
     142    omap.MinMax(mintemp, maxtemp);
    114143    MeanSigma(omap, mean, sigma);
    115144    cout << " Src Map : Mean=" << mean << " Sigma=" << sigma << "  Jy - Sizes:" << endl;
Note: See TracChangeset for help on using the changeset viewer.