// 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 "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 mcrd/visfmib"<1)&&(strcmp(arg[1],"-h")==0)) return Usage(); if (narg<=1) return Usage(); string inoutpath = arg[1]; int ifilmin=0, ifilmax=-1; if(narg>2) sscanf(arg[2],"%d,%d",&ifilmin,&ifilmax); if(ifilmin<0) ifilmin=0; int jfr1=0, jfr2=0, nbinfreq=0; if(narg>3) sscanf(arg[3],"%d,%d,%d",&jfr1,&jfr2,&nbinfreq); char str[1024]; // --- recherche des fichiers de visibilites int nfile = 0; { struct stat buffer; int i1=ifilmin, i2=(ifilmax 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<=0) nbinfreq=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/svvdt2.ppf",inoutpath.c_str()); cout<<"writing visibility matrix to file "<>>> svv2mtx2.cc ------- END ----------- RC="<