// Utilisation de SOPHYA pour faciliter les tests ... #include "sopnamsp.h" #include "machdefs.h" /* ---------------------------------------------------------- Projet BAORadio - (C) LAL/IRFU 2008-2010 Programme de lecture des fichiers vecteurs/matrices de visibilites produits par mcrd / vismfib R. Ansari, C. Magneville - LAL/Irfu V : Mai 2009 ---------------------------------------------------------- */ // include standard c/c++ #include #include #include #include #include #include #include #include #include "pexceptions.h" #include "tvector.h" #include "fioarr.h" //--------------------------- Fonctions de ce fichier ------------------- int Usage(void); int Usage(void) { cout<<" --- svv2mtx2.cc : Read PPF files produced by visfmib"<=narg) {Usage(); return -2;} string inoutpath = arg[optind]; if(ifilmin<0) ifilmin=0; if(nbinfreq<=0) nbinfreq=1; cout<<"inoutpath="< chanum; { sprintf(str,"%s/chanum.ppf",inoutpath.c_str()); PInPersist pic(str); pic >> chanum; cout<<"number of visib is "< >* > vMVis; for(int i=0;i >); // --- read visibility files int nfreq0, nvisi, nmoyfreq = 0; TVector Ttag(nfile), Freq; TVector Npaqsum(nfile), NFreq; for(int ifile=ifilmin; ifile<=ifilmax; ifile++) { sprintf(str, "%s/vismtx%d.ppf",inoutpath.c_str(),ifile); cout< > vismtx; pin >> vismtx; Ttag(ifile-ifilmin) = (double)vismtx.Info()["MeanTT"]/125.e6; if(ifile==ifilmin) printf("Reference TimeTag is %.2f = %.5f sec\n" ,(double)vismtx.Info()["MeanTT"],Ttag(0)); uint_4 nmean = vismtx.Info()["NPAQSUM"]; Npaqsum(ifile-ifilmin) = (int_4)nmean; nfreq0 = vismtx.NCols(); nvisi = vismtx.NRows(); // --- For initialisation purposes if (ifile==ifilmin) { cout<<"vismtx: number of frequencies = "<=nfreq0) jfr1=nfreq0-1; if(jfr2=nfreq0) jfr2=nfreq0-1; if(nbinfreq>jfr2-jfr1+1) nbinfreq=jfr2-jfr1+1; nmoyfreq = (jfr2-jfr1+1)/nbinfreq; if(nmoyfreq*nbinfreq=nfreq0) break; Freq(i) += ip; nj++; } if(nj>0) Freq(i) /= (double)nj; NFreq(i) = nj; cout<<" F("< vs t cout<<"allocating "<)/1.e6<<" Mo"<ReSize(nfile,nbinfreq); (*vMVis[ivi]) = complex(0.,0.); } } // --- Fill visibility matrix for(int ivi=0;ivi v(0.,0.); for(int j=0;j=nfreq0) break; v += vismtx(ivi,ifrp); nj++; } if(nj>0) v /= (double)nj; (*vMVis[ivi])(ifile-ifilmin,ifr) = v / (double)nmean; } } } sprintf(str, "%s/%s",inoutpath.c_str(),ppfoutname.c_str()); cout<<"writing visibility matrix to file "<>>> svv2mtx2.cc ------- END ----------- RC="<