Changeset 3905 in Sophya for trunk/AddOn
- Timestamp:
- Oct 15, 2010, 11:02:36 PM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/branap.cc
r3888 r3905 32 32 nthreads_=1; 33 33 34 spec_win_sz_=0; 35 spw_ext_sz_=0; 36 nbmax_specwfiles_=0; 37 34 38 vmin_=0.; vmax_=9e99; 35 39 gainfile_=""; … … 96 100 else if (strcmp(arg[ka],"-gain")==0) { 97 101 gainfile_=arg[ka+1]; 102 ka+=2; 103 } 104 else if (strcmp(arg[ka],"-tspwin")==0) { 105 int ai1=0,ai2=0,ai3=0; 106 sscanf(arg[ka+1],"%d,%d,%d",&ai1,&ai2,&ai3); 107 spec_win_sz_=ai1; spw_ext_sz_=ai2; nbmax_specwfiles_=ai3; 98 108 ka+=2; 99 109 } … … 138 148 << " [-nbloc NBloc] [-freq NumFreqMin,NumFreqMax,NBinFreq] \n" 139 149 << " [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] \n" 140 << " [-gain filename] [-varcut min,max] \n"150 << " [-gain filename] [-varcut min,max] [-tspwin wsz,extsz,nfiles] \n" 141 151 << " -in Imin,Imax,Istep InPath FiberList [InPath2 FiberList2 InPath3 FiberList3 ...] \n" << endl; 142 152 if (fgshort) { … … 159 169 << " -varcut min,max : min-max cut on variance \n" 160 170 << " -gain filename : spectral response fits file name \n" 171 << " -tspwin wsz,extsz,nfiles : spectra time (paquet no) window (ex: -tspwin 120,4,5) \n" 172 << " wsz,extsz= window,extension size; nfiles= maximum number of windows saved \n" 161 173 << " -in : input files/directory definition : \n" 162 174 << " Imin,Imax,Istep: fits files signalII.fits Imin<=II<=Imax Istep=increment \n" … … 187 199 cout << " FreqMin= " << freqmin_ << " FreqMax= " << freqmax_ << " NBinFreq= " << nbinfreq_ << endl; 188 200 cout << " GainFileName=" << gainfile_ << " VarianceMin= " << vmin_ << " VarianceMax= " << vmax_ << endl; 201 cout << " Spectra TimeWindow (Nb.Paquets) Size=" << spec_win_sz_ << " ExtensionSize=" << spw_ext_sz_ 202 << " MaxNbFile=" << nbmax_specwfiles_ << endl; 189 203 cout << " PaqSize=" << paqsize_ << " - NZones=" << nzones_ << " NPaqZone=" << npaqinzone_ 190 204 << " PrtLevel=" << prtlevel_ << " PrtCntModulo=" << prtmodulo_ << endl; -
trunk/AddOn/TAcq/branap.h
r3888 r3905 46 46 uint_4 nthreads_; // Nb de threads pour l'execution parallele ds BRVisibilityCalculator 47 47 48 uint_4 spec_win_sz_; // taille de fenetre (temps/no de paquet) pour les spectres 49 uint_4 spw_ext_sz_; // zone de garde en temps / no de paquet pour la fenetre des spectres 50 uint_4 nbmax_specwfiles_; // nb maxi de fichiers de fenetres de spectres sauvees 51 48 52 double vmin_,vmax_; // coupure min-max sur la variance 49 53 string gainfile_; // nom du fichier de gain (reponse spectrale) -
trunk/AddOn/TAcq/brproc.cc
r3888 r3905 32 32 33 33 //--------------------------------------------------------------------- 34 // Classe de traitement simple - calcul de spectres moyennes / voie 34 // Classe de traitement de spectres - 35 // Calcul de spectres moyennes,variance / voie + nettoyage 35 36 //--------------------------------------------------------------------- 36 37 /* --Methode-- */ … … 39 40 : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean), 40 41 fgdatafft_(fgdatafft), fgsinglechannel_(fgsinglechan), 41 clnflg_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()),42 nbpaq4mean_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()), 42 43 nbadpaq_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()) 43 44 { … … 59 60 60 61 numfile_=0; 61 nbpaq4mean_=0;62 62 totnbpaq_=0; 63 63 64 size_t nchan=(fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres()); 65 66 for(size_t i=0; i<nchan; i++) { 67 nbpaq4mean_[i]=nbadpaq_[i]=0; 68 } 69 70 // Definition des tailles de fenetres de spectres, etc ... 71 SetSpectraWindowSize(); 72 SetMaxNbSepcWinFiles(); 73 nbtot_specwin_=0; 64 74 SetVarianceLimits(); 65 75 … … 69 79 ofsdtp_ = new FitsInOutFile(dtfile,FitsInOutFile::Fits_Create); 70 80 dtp_ = new SwFitsDataTable(*ofsdtp_,1024,true); 71 int nchan=(fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres());72 81 char cnom[32]; 73 82 for(int i=0; i<nchan; i++) { 74 sprintf(cnom,"var %d",i);83 sprintf(cnom,"variance%d",i); 75 84 dtp_->AddFloatColumn(cnom); 76 85 } 86 /* 77 87 for(int i=0; i<nchan; i++) { 78 sprintf(cnom," varnorm%d",i);88 sprintf(cnom,"sigma%d",i); 79 89 dtp_->AddFloatColumn(cnom); 80 90 } 91 */ 81 92 xnt_=new double[nchan*2]; 93 82 94 } 83 95 … … 85 97 BRMeanSpecCalculator::~BRMeanSpecCalculator() 86 98 { 87 if (nbpaq4mean_>1) SaveSpectra(); 99 uint_8 npqm=0; 100 for(size_t i=0; i<nbpaq4mean_.size(); i++) npqm+=nbpaq4mean_[i]; 101 if (npqm>nmean_*nbpaq4mean_.size()/10) SaveMeanSpectra(); 88 102 cout << " ---------------- BRMeanSpecCalculator()_Finalizing -------------------- " << endl; 89 103 for(size_t i=0; i<nbadpaq_.size(); i++) { … … 100 114 101 115 /* --Methode-- */ 102 void BRMeanSpecCalculator::ReadGainFitsFile(string filename) 116 void BRMeanSpecCalculator::SetSpectraWindowSize(uint_4 winsz, uint_4 wszext) 117 { 118 if (winsz < 3) { 119 winsz=1; wszext=0; 120 } 121 if (wszext>=winsz/2) wszext=winsz/2; 122 sa_size_t sz[5]={0,0,0,0,0}; 123 sz[0]=mspecmtx_.NCols(); 124 sz[1]=mspecmtx_.NRows(); 125 sz[2]=winsz+2*wszext; 126 spec_window_.SetSize(3,sz); 127 spwin_ext_sz_=wszext; 128 sz[0]=mspecmtx_.NRows(); 129 sz[1]=winsz+2*wszext; 130 clnflg_.SetSize(2,sz); 131 cout << "BRMeanSpecCalculator::SetSpectraWindowSize()/Info: SpectraWindowSize()=" << GetSpectraWindowSize() 132 << " ExtensionSize=" << GetSpecWinExtensionSize() << " Overlap=" << GetSpecWinOverlapSize() 133 << " ArraySize=" << spec_window_.SizeZ() << endl; 134 135 paqnum_w_start=spwin_ext_sz_; // premiere initialisation du numero de paquet 136 return; 137 } 138 139 /* --Methode-- */ 140 void BRMeanSpecCalculator::ReadGainFitsFile(string filename, bool fgapp) 103 141 { 104 142 cout << " BRMeanSpecCalculator::ReadGainFitsFile() - reading file " << filename; 105 143 FitsInOutFile fis(filename, FitsInOutFile::Fits_RO); 106 144 fis >> sgain_; 107 cout << " MeanGain=" << sgain_.Sum()/sgain_.Size() << endl; 145 fg_apply_gains_=fgapp; 146 cout << " MeanGain=" << sgain_.Sum()/sgain_.Size() << " ApplyGains=" 147 << ((fg_apply_gains_)?"true":"false") << endl; 108 148 } 109 149 … … 111 151 { return (z.real()*z.real()+z.imag()*z.imag()); } 112 152 153 154 155 113 156 /* --Methode-- */ 114 157 int BRMeanSpecCalculator::Process() 115 158 { 116 if (nbpaq4mean_==nmean_) SaveSpectra(); 117 FlagBadPackets(); 118 159 // Cette methode remplit le tableau spec_window_ avec les spectres (renormalise avec 160 // les gains si demande) et appelle la methode du traitement de la fenetre temporelle 161 // des spectres le cas echeant ProcSpecWin() 162 163 int_8 nbpaqdec = (int_8)totnbpaq_-(int_8)GetSpecWinOverlapSize(); 164 if ((nbpaqdec>0)&&(nbpaqdec%GetSpectraWindowSize()==0)) { 165 paqnum_w_end=totnbpaq_-GetSpecWinExtensionSize(); 166 ProcSpecWin(paqnum_w_start, paqnum_w_end); 167 paqnum_w_start=totnbpaq_-GetSpecWinExtensionSize(); 168 } 169 119 170 if (fgdatafft_) { // Donnees firmware FFT 120 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 121 if (clnflg_[i]) { nbadpaq_[i]++; continue; } // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 ) 171 for(sa_size_t i=0; i<spec_window_.SizeY(); i++) { 122 172 TwoByteComplex* zp=NULL; 123 173 if (fgsinglechannel_) { … … 128 178 if (i%2==1) zp=vpaq_[i/2].Data2C(); 129 179 } 130 TVector< r_4 > spec = mspecmtx_.Row(i); 131 TVector< r_4 > sspec = sigspecmtx_.Row(i); 132 for(sa_size_t f=1; f<spec.Size(); f++) { 133 r_4 m2zf=zp[f].module2F();; 134 spec(f) += m2zf; 135 sspec(f) += m2zf*m2zf; 136 } 180 sa_size_t kz=PaqNumToArrayIndex(totnbpaq_); 181 for(sa_size_t f=0; f<spec_window_.SizeX(); f++) 182 spec_window_(f,i,kz) = zp[f].module2F(); 137 183 } 138 184 } 139 185 else { // Donnees RAW qui ont du etre processe par BRFFTCalculator 140 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 141 if (clnflg_[i]) { nbadpaq_[i]++; continue; } // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 ) 186 for(sa_size_t i=0; i<spec_window_.SizeY(); i++) { 142 187 complex<ODT>* zp=NULL; 143 188 if (fgsinglechannel_) { … … 148 193 if (i%2==1) zp= reinterpret_cast< complex<ODT>* >(vprocpaq_[i/2]+memgr_.ProcPaqSize()/2) ; 149 194 } 195 sa_size_t kz=PaqNumToArrayIndex(totnbpaq_); 196 for(sa_size_t f=0; f<spec_window_.SizeX(); f++) 197 spec_window_(f,i,kz) = Zmod2(zp[f]); 198 } 199 } 200 if (fg_apply_gains_) { // Application des gains, si demande 201 sa_size_t kz=PaqNumToArrayIndex(totnbpaq_); 202 for(sa_size_t i=0; i<spec_window_.SizeY(); i++) 203 (spec_window_(Range::all(), Range(i), Range(kz))).Div(sgain_.Row(i)); 204 } 205 206 totnbpaq_++; 207 return 0; 208 } 209 210 211 /* --Methode-- */ 212 void BRMeanSpecCalculator::ProcSpecWin(uint_8 numpaqstart, uint_8 numpaqend) 213 { 214 //DBG cout << "BRMeanSpecCalculator::ProcSpecWin()/Debug: numpaqstart=" << numpaqstart 215 //DBG << " numpaqend=" << numpaqend << endl; 216 217 // On appelle la routine de nettoyage qui doit flagger les mauvais paquets 218 FlagBadPackets(numpaqstart, numpaqend); 219 220 // Boucle sur les numeros de paquets de la fenetre en temps 221 for (uint_8 jp=numpaqstart; jp<numpaqend; jp++) { 222 // On sauvegarde les spectres moyennes si necessaire 223 if ((nbpaq4mean_[0]>0)&&(nbpaq4mean_[0]%nmean_ == 0)) SaveMeanSpectra(); 224 // On peut aussi acceder aux spectres et flags pour (jpmin -),(jpmax+) GetSpecWinExtensionSize() 225 sa_size_t kz=PaqNumToArrayIndex(jp); 226 // Boucle sur les numeros de voie (canaux) 227 for(sa_size_t i=0; i<spec_window_.SizeY(); i++) { 228 if ( clnflg_(i,kz) != 0) continue; 150 229 TVector< r_4 > spec = mspecmtx_.Row(i); 151 230 TVector< r_4 > sspec = sigspecmtx_.Row(i); 152 for(sa_size_t f=1; f<spec.Size(); f++) { 153 r_4 m2zf=Zmod2(zp[f]); 154 spec(f) += m2zf; 155 sspec(f) += (m2zf*m2zf); 156 } 231 // Calcul de spectres moyennes et variance 232 for(sa_size_t f=1; f<spec.Size(); f++) { // boucle sur les frequences 233 spec(f) += spec_window_(f,i,kz); 234 sspec(f) += spec_window_(f,i,kz)*spec_window_(f,i,kz); 235 } 236 nbpaq4mean_[i]++; // compteur de paquets OK pour la moyenne 157 237 } 158 238 } 159 nbpaq4mean_++; totnbpaq_++; 160 return 0; 161 } 162 163 /* --Methode-- */ 164 void BRMeanSpecCalculator::FlagBadPackets() 165 { 166 if (fgdatafft_) { // Donnees firmware FFT 167 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 168 TwoByteComplex* zp=NULL; 169 if (fgsinglechannel_) { 170 zp=vpaq_[i].Data1C(); 171 } 172 else { 173 zp=vpaq_[i/2].Data1C(); 174 if (i%2==1) zp=vpaq_[i/2].Data2C(); 175 } 239 if (nbtot_specwin_<nmaxfiles_specw_) SaveSpectraWindow(); 240 nbtot_specwin_++; 241 return; 242 } 243 244 /* --Methode-- */ 245 void BRMeanSpecCalculator::FlagBadPackets(uint_8 numpaqstart, uint_8 numpaqend) 246 { 247 // Boucle sur les numeros de paquets de la fenetre en temps 248 for (uint_8 jp=numpaqstart; jp<numpaqend; jp++) { 249 // On peut aussi acceder aux spectres et flags pour (jpmin -),(jpmax+) GetSpecWinExtensionSize() 250 sa_size_t kz=PaqNumToArrayIndex(jp); 251 // Boucle sur les numeros de voie (canaux) 252 for(sa_size_t i=0; i<spec_window_.SizeY(); i++) { 253 double mean, sigma; 254 sa_size_t kz=PaqNumToArrayIndex(totnbpaq_); 176 255 double variance=0.; 177 double varnorm=0.; 178 for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) { 179 double modsq=(double)zp[f].module2F(); 180 variance+=modsq; 181 varnorm+=modsq/sgain_(i,f); 182 } 256 variance=spec_window_(Range(1,Range::lastIndex()), Range(i), Range(kz)).Sum(); 183 257 xnt_[i]=variance; 184 xnt_[i+mspecmtx_.NRows()]=varnorm; 185 clnflg_[i]=0; 186 if (varnorm<varmin_) clnflg_[i]=1; 187 else if (varnorm>varmax_) clnflg_[i]=2; 258 clnflg_(i,kz)=0; 259 if (variance<varmin_) { clnflg_(i,kz)=1; nbadpaq_[i]++; } 260 else if (variance>varmax_) { clnflg_(i,kz)=2; nbadpaq_[i]++; } 188 261 } 189 } 190 else { // Donnees RAW qui ont du etre processe par BRFFTCalculator 191 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 192 complex<ODT>* zp=NULL; 193 if (fgsinglechannel_) { 194 zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i]); 195 } 196 else { 197 zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i/2]); 198 if (i%2==1) zp= reinterpret_cast< complex<ODT>* >(vprocpaq_[i/2]+memgr_.ProcPaqSize()/2) ; 199 } 200 double variance=0.; 201 double varnorm=0.; 202 for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) { 203 double modsq=(double)Zmod2(zp[f]); 204 variance+=modsq; 205 varnorm+=modsq/sgain_(i,f); 206 } 207 xnt_[i]=variance; 208 xnt_[i+mspecmtx_.NRows()]=varnorm; 209 clnflg_[i]=0; 210 if (varnorm<varmin_) clnflg_[i]=1; 211 else if (varnorm>varmax_) clnflg_[i]=2; 262 dtp_->AddRow(xnt_); 263 } 264 return; 265 } 266 267 /* --Methode-- */ 268 void BRMeanSpecCalculator::SaveMeanSpectra() 269 { 270 for(sa_size_t ir=0; ir<mspecmtx_.NRows(); ir++) { 271 char buff[32]; 272 sprintf(buff,"NPAQSUM_%d",(int)ir); 273 mspecmtx_.Info()["NPAQSUM"] = nbpaq4mean_[0]; 274 mspecmtx_.Info()[buff] = nbpaq4mean_[ir]; 275 sigspecmtx_.Info()["NPAQSUM"] = nbpaq4mean_[0]; 276 sigspecmtx_.Info()[buff] = nbpaq4mean_[ir]; 277 if (nbpaq4mean_[ir] > 0) { 278 mspecmtx_.Row(ir) /= (r_4)nbpaq4mean_[ir]; 279 sigspecmtx_.Row(ir) /= (r_4)nbpaq4mean_[ir]; 280 sigspecmtx_.Row(ir) -= (mspecmtx_.Row(ir) && mspecmtx_.Row(ir)); // Mean(X^2) - [ Mean(X) ]^2 212 281 } 213 282 } 214 dtp_->AddRow(xnt_);215 return;216 }217 218 /* --Methode-- */219 void BRMeanSpecCalculator::SaveSpectra()220 {221 mspecmtx_.Info()["NPAQSUM"] = nbpaq4mean_;222 mspecmtx_ /= (double)nbpaq4mean_;223 sigspecmtx_.Info()["NPAQSUM"] = nbpaq4mean_;224 sigspecmtx_ /= (double)nbpaq4mean_;225 sigspecmtx_ -= (mspecmtx_ && mspecmtx_); // Mean(X^2) - [ Mean(X) ]^2226 283 char nfile[64]; 227 284 string flnm; 228 /*229 {230 sprintf(nfile,"mspecmtx%d.ppf",numfile_);231 flnm=outpath_+nfile;232 POutPersist po(flnm);233 po << mspecmtx_;234 }235 {236 sprintf(nfile,"sigspecmtx%d.ppf",numfile_);237 flnm=outpath_+nfile;238 POutPersist po(flnm);239 po << sigspecmtx_;240 }241 */242 285 { 243 286 sprintf(nfile,"mspecmtx%d.fits",numfile_); … … 253 296 } 254 297 255 cout << numfile_ << "-BRMeanSpecCalculator::Save Spectra() NPaqProc="298 cout << numfile_ << "-BRMeanSpecCalculator::SaveMeanSpectra() NPaqProc=" 256 299 << totnbpaq_ << " -> Mean/Sig spectra Matrix in " << flnm << " /sigspec...ppf" << endl; 257 numfile_++; nbpaq4mean_=0; 300 numfile_++; 301 302 for(size_t i=0; i<nbpaq4mean_.size(); i++) nbpaq4mean_[i]=0; 258 303 mspecmtx_ = (r_4)(0.); 259 304 sigspecmtx_ = (r_4)(0.); 260 305 return; 306 } 307 308 /* --Methode-- */ 309 void BRMeanSpecCalculator::SaveSpectraWindow() 310 { 311 char nfile[64]; 312 string flnm; 313 sprintf(nfile,"specwin%d.fits",nbtot_specwin_); 314 flnm="!"+outpath_+nfile; 315 FitsInOutFile fos(flnm,FitsInOutFile::Fits_Create); 316 fos << spec_window_; 317 cout << " SaveSpectraWindow() " << nbtot_specwin_ << "- file " << nfile << " created " << endl; 261 318 } 262 319 … … 332 389 for(uint_4 k=0; k<inp.Size(); k++) inp(k)=(ODT)indata[k]; 333 390 fftwf_execute(myplan_); 334 for(uint_4 k=0; k<outfc.Size(); k++) ofc[k]=outfc(k) ;391 for(uint_4 k=0; k<outfc.Size(); k++) ofc[k]=outfc(k)/(ODT)sz_; // on renormalise les coeff FFT ( / sz ) 335 392 return; 336 393 } -
trunk/AddOn/TAcq/brproc.h
r3888 r3905 6 6 // Classes de threads de traitememt donnees BAORadio 7 7 // Principales classes utilisables 8 // - BRMeanSpecCalculator (donnees FFT )8 // - BRMeanSpecCalculator (donnees FFT ou RAW apres BRFFTCalculator) 9 9 // - BRFFTCalculator (donnees RAW) 10 10 //---------------------------------------------------------------- … … 27 27 using namespace std; 28 28 29 30 29 31 30 //--------------------------------------------------------------------- … … 40 39 virtual ~BRMeanSpecCalculator(); // Fait le nettoyage final , sauvegarde des objets ... 41 40 41 // Definit la taille de la fenetre temporelle (winsz = nb de paquets) des spectres a traiter 42 // Cette zone est etendu de wszext paquet en debut et en fin de paquet 43 void SetSpectraWindowSize(uint_4 winsz=15, uint_4 wszext=3); 44 // Taille de la fenetre en temps (nb de paquets a traiter en bloc 45 inline sa_size_t GetSpectraWindowSize() { return spec_window_.SizeZ()-2*spwin_ext_sz_; } 46 // Taille de la zone d'extension de la fenetre de chaque cote 47 inline sa_size_t GetSpecWinExtensionSize() { return spwin_ext_sz_; } 48 // La taille de recouvrement est le double de la taille de la zone d'extension 49 inline sa_size_t GetSpecWinOverlapSize() { return 2*spwin_ext_sz_; } 50 // Retourne l'index (selon Z) dans le tableau des spectres en fonction du numero de paquet 51 inline sa_size_t PaqNumToArrayIndex(uint_8 numpaq) { return numpaq%spec_window_.SizeZ() ; } 52 53 // Pour definir le nombre maximum de fichiers de fenetres de spectres 54 inline void SetMaxNbSepcWinFiles(uint_4 nmax=0) { nmaxfiles_specw_=nmax; } 55 42 56 inline void SetVarianceLimits(double vmin=0., double vmax=9.e99) 43 { varmin_=vmin; varmax_=vmax; } 44 45 void ReadGainFitsFile(string filename); 46 47 protected: 48 virtual int Process(); 49 virtual void FlagBadPackets(); 50 virtual void SaveSpectra(); 57 { varmin_=vmin; varmax_=vmax; } 58 59 // lecture des gains en fonction de la frequence depuis un fichier FITS 60 // flag fgapp: Active ou desactive la renormalisation de coefficients de Fourier par les gains=f(frequence) 61 void ReadGainFitsFile(string filename, bool fgapp=true); 62 63 protected: 64 virtual int Process(); // appele paquet par paquet 65 // appele par Process() pour traiter un groupe de paquets correspondant a une fenetre en temps 66 virtual void ProcSpecWin(uint_8 numpaqstart, uint_8 numpaqend); // appele fenetre par fenetre 67 virtual void FlagBadPackets(uint_8 numpaqstart, uint_8 numpaqend); 68 virtual void SaveMeanSpectra(); // Pour sauver les spectres moyennes ( + sigma ) dans un fichier 69 virtual void SaveSpectraWindow(); // Pour sauver les spectres de la fenetre temporel ds un fichier 51 70 52 71 … … 56 75 bool fgsinglechannel_; 57 76 uint_4 numfile_; 58 uint_8 nbpaq4mean_; 59 77 vector<uint_8> nbpaq4mean_; 60 78 uint_8 totnbpaq_; 79 61 80 TMatrix< r_4 > mspecmtx_; // Matrice des spectres moyennees 62 81 TMatrix< r_4 > sigspecmtx_; // Matrice des sigmas des spectres 63 82 83 TArray< r_4 > spec_window_; // fenetre en temps sur les spectres 84 uint_4 spwin_ext_sz_; // Taille de la zone d'extension en debut et en fin 85 TArray< uint_2 > clnflg_; // flag de nettoyage resultant de la routine FlagBadPackets() 86 uint_8 paqnum_w_start; // numero de paquet du debut de la fenetre en temps (inclusif) 87 uint_8 paqnum_w_end; // numero de paquet final de la fenetre en temps (non inclusif) 88 89 uint_4 nbtot_specwin_; // nombre total de fenetre de spectres traites 90 uint_4 nmaxfiles_specw_; // nombre maximum de fichier de fenetre_spectre 91 64 92 TMatrix< r_4 > sgain_; // gain en fonction de la frequence 65 66 vector<int> clnflg_; // resultat de la routine "cleaner" 93 bool fg_apply_gains_; 94 67 95 double varmin_, varmax_; // limites pour la coupure sur la variance 68 96 vector<uint_8> nbadpaq_; -
trunk/AddOn/TAcq/specmfib.cc
r3888 r3905 59 59 BRPaquet paq(par.paqsize_); 60 60 uint_4 procsz=sizeof(float)*(paq.DataSize()+4); 61 if ((par.fgdatafft_)||(par.action_=="cube3d")) procsz = 0;61 // if ((par.fgdatafft_)||(par.action_=="cube3d")) procsz = 0; 62 62 cout << " specmfib: Creating MemZoneMgr/threads - PaqSz= " << par.paqsize_ 63 63 << " ProcPaqSz=" << procsz << endl; … … 77 77 BRFFTCalculator procfft(mmgr, par.fgsinglechannel_); 78 78 if (!par.fgdatafft_) procms.SetMemZAction(MemZA_ProcB); 79 79 if (par.spec_win_sz_>0) { 80 procms.SetSpectraWindowSize(par.spec_win_sz_, par.spw_ext_sz_); 81 procms.SetMaxNbSepcWinFiles(par.nbmax_specwfiles_); 82 } 80 83 FitsCubeWriter wrt(mmgr, par.outpath_, par.nbloc_); 81 84
Note:
See TracChangeset
for help on using the changeset viewer.