Changeset 3886 in Sophya
- Timestamp:
- Sep 24, 2010, 12:31:21 AM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/branap.cc
r3883 r3886 31 31 nbcalgrp_=1; 32 32 nthreads_=1; 33 34 vmin_=0.; vmax_=9e99; 33 35 } 34 36 … … 86 88 rdsamefc_=false; 87 89 ka++; 90 } 91 else if (strcmp(arg[ka],"-varcut")==0) { 92 sscanf(arg[ka+1],"%lg,%lg",&vmin_,&vmax_); 93 ka+=2; 88 94 } 89 95 else if (strcmp(arg[ka],"-in")==0) { … … 126 132 cout << " Usage: prgname [-act ACT] [-out OutPath] [-nmean NMean] [-zones NZones,nPaqinZone] \n" 127 133 << " [-nbloc NBloc] [-freq NumFreqMin,NumFreqMax,NBinFreq] \n" 128 << " [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] \n"134 << " [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] [-varcut min,max] \n" 129 135 << " -in Imin,Imax,Istep InPath FiberList [InPath2 FiberList2 InPath3 FiberList3 ...] \n" << endl; 130 136 if (fgshort) { … … 145 151 << " -nthr n : number of threads for parallel execution in BRVisibilityCalculator (default=1) \n" 146 152 << " -nosfc : Don't force reading with SAME FrameCounter \n" 153 << " -varcut min,max : min-max cut on variance \n" 147 154 << " -in : input files/directory definition : \n" 148 155 << " Imin,Imax,Istep: fits files signalII.fits Imin<=II<=Imax Istep=increment \n" … … 172 179 cout << " Action=" << action_ << " NMean=" << nmean_ << " NBloc=" << nbloc_ << endl; 173 180 cout << " FreqMin= " << freqmin_ << " FreqMax= " << freqmax_ << " NBinFreq= " << nbinfreq_ << endl; 181 cout << " VarianceMin= " << vmin_ << " VarianceMax= " << vmax_ << endl; 174 182 cout << " PaqSize=" << paqsize_ << " - NZones=" << nzones_ << " NPaqZone=" << npaqinzone_ 175 183 << " PrtLevel=" << prtlevel_ << " PrtCntModulo=" << prtmodulo_ << endl; -
trunk/AddOn/TAcq/branap.h
r3883 r3886 45 45 uint_4 nbcalgrp_; // Nb d'objets/threads dans BRVisCalcGroup 46 46 uint_4 nthreads_; // Nb de threads pour l'execution parallele ds BRVisibilityCalculator 47 48 double vmin_,vmax_; // coupure min-max sur la variance 47 49 }; 48 50 -
trunk/AddOn/TAcq/brproc.cc
r3881 r3886 20 20 #include "ctimer.h" 21 21 #include "fftpserver.h" 22 #include "f ftwserver.h"22 #include "fitsarrhand.h" 23 23 24 24 #include "FFTW/fftw3.h" … … 38 38 bool fgdatafft, bool fgsinglechan) 39 39 : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean), 40 fgdatafft_(fgdatafft), fgsinglechannel_(fgsinglechan) 40 fgdatafft_(fgdatafft), fgsinglechannel_(fgsinglechan), 41 clnflg_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()), 42 nbadpaq_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()) 41 43 { 42 44 setNameId("meanSpecCalc",1); … … 55 57 nbpaq4mean_=0; 56 58 totnbpaq_=0; 59 60 SetVarianceLimits(); 61 62 ofsdtp_=NULL; 63 dtp_=NULL; 64 string dtfile="!"+outpath_+"/dtspec.fits"; 65 ofsdtp_ = new FitsInOutFile(dtfile,FitsInOutFile::Fits_Create); 66 dtp_ = new SwFitsDataTable(*ofsdtp_,1024,true); 67 int nchan=(fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres()); 68 char cnom[32]; 69 for(int i=0; i<nchan; i++) { 70 sprintf(cnom,"var%d",i); 71 dtp_->AddFloatColumn(cnom); 72 } 73 xnt_=new double[nchan]; 57 74 } 58 75 … … 61 78 { 62 79 if (nbpaq4mean_>1) SaveSpectra(); 80 cout << " ---------------- BRMeanSpecCalculator()_Finalizing -------------------- " << endl; 81 for(size_t i=0; i<nbadpaq_.size(); i++) { 82 cout << " Channel " << i << " NBadPaq=" << nbadpaq_[i] << " / TotNbPaq=" << totnbpaq_ << endl; 83 } 84 if (dtp_) { 85 cout << *dtp_; 86 delete dtp_; 87 delete ofsdtp_; 88 delete xnt_; 89 } 90 cout << " ------------------------------------------------------------------------ " << endl; 63 91 } 64 92 … … 70 98 int BRMeanSpecCalculator::Process() 71 99 { 72 73 100 if (nbpaq4mean_==nmean_) SaveSpectra(); 101 FlagBadPackets(); 74 102 75 103 if (fgdatafft_) { // Donnees firmware FFT 76 104 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 105 if (clnflg_[i]) { nbadpaq_[i]++; continue; } // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 ) 77 106 TwoByteComplex* zp=NULL; 78 107 if (fgsinglechannel_) { … … 94 123 else { // Donnees RAW qui ont du etre processe par BRFFTCalculator 95 124 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 125 if (clnflg_[i]) { nbadpaq_[i]++; continue; } // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 ) 96 126 complex<ODT>* zp=NULL; 97 127 if (fgsinglechannel_) { … … 116 146 117 147 /* --Methode-- */ 148 void BRMeanSpecCalculator::FlagBadPackets() 149 { 150 if (fgdatafft_) { // Donnees firmware FFT 151 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 152 TwoByteComplex* zp=NULL; 153 if (fgsinglechannel_) { 154 zp=vpaq_[i].Data1C(); 155 } 156 else { 157 zp=vpaq_[i/2].Data1C(); 158 if (i%2==1) zp=vpaq_[i/2].Data2C(); 159 } 160 double variance=0.; 161 for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) variance+=(double)zp[f].module2F(); 162 xnt_[i]=variance; 163 clnflg_[i]=0; 164 if (variance<varmin_) clnflg_[i]=1; 165 else if (variance>varmax_) clnflg_[i]=2; 166 } 167 } 168 else { // Donnees RAW qui ont du etre processe par BRFFTCalculator 169 for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) { 170 complex<ODT>* zp=NULL; 171 if (fgsinglechannel_) { 172 zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i]); 173 } 174 else { 175 zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i/2]); 176 if (i%2==1) zp= reinterpret_cast< complex<ODT>* >(vprocpaq_[i/2]+memgr_.ProcPaqSize()/2) ; 177 } 178 double variance=0.; 179 for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) variance+=(double)Zmod2(zp[f]); 180 xnt_[i]=variance; 181 clnflg_[i]=0; 182 if (variance<varmin_) clnflg_[i]=1; 183 else if (variance>varmax_) clnflg_[i]=2; 184 } 185 } 186 dtp_->AddRow(xnt_); 187 return; 188 } 189 190 /* --Methode-- */ 118 191 void BRMeanSpecCalculator::SaveSpectra() 119 192 { … … 125 198 char nfile[64]; 126 199 string flnm; 200 /* 127 201 { 128 202 sprintf(nfile,"mspecmtx%d.ppf",numfile_); … … 137 211 po << sigspecmtx_; 138 212 } 213 */ 214 { 215 sprintf(nfile,"mspecmtx%d.fits",numfile_); 216 flnm="!"+outpath_+nfile; 217 FitsInOutFile fos(flnm,FitsInOutFile::Fits_Create); 218 fos << mspecmtx_; 219 } 220 { 221 sprintf(nfile,"sigspecmtx%d.fits",numfile_); 222 flnm="!"+outpath_+nfile; 223 FitsInOutFile fos(flnm,FitsInOutFile::Fits_Create); 224 fos << sigspecmtx_; 225 } 226 139 227 cout << numfile_ << "-BRMeanSpecCalculator::SaveSpectra() NPaqProc=" 140 228 << totnbpaq_ << " -> Mean/Sig spectra Matrix in " << flnm << " /sigspec...ppf" << endl; -
trunk/AddOn/TAcq/brproc.h
r3881 r3886 22 22 #include "ntuple.h" 23 23 #include "datatable.h" 24 #include "swfitsdtable.h" 24 25 #include "FFTW/fftw3.h" 25 26 … … 39 40 virtual ~BRMeanSpecCalculator(); // Fait le nettoyage final , sauvegarde des objets ... 40 41 42 inline void SetVarianceLimits(double vmin=0., double vmax=9.e99) 43 { varmin_=vmin; varmax_=vmax; } 44 41 45 protected: 42 46 virtual int Process(); 47 virtual void FlagBadPackets(); 43 48 virtual void SaveSpectra(); 49 44 50 45 51 uint_4 nmean_; // Nombre de spectres pour le calcul des moyennes … … 54 60 TMatrix< r_4 > sigspecmtx_; // Matrice des sigmas des spectres 55 61 62 vector<int> clnflg_; // resultat de la routine "cleaner" 63 double varmin_, varmax_; // limites pour la coupure sur la variance 64 vector<uint_8> nbadpaq_; 65 66 FitsInOutFile* ofsdtp_; // Output fits stream for datatable 67 SwFitsDataTable* dtp_; // DataTable 68 double* xnt_; 56 69 }; 57 70 -
trunk/AddOn/TAcq/specmfib.cc
r3883 r3886 72 72 73 73 BRMeanSpecCalculator procms(mmgr, par.outpath_, par.nmean_, par.fgdatafft_, par.fgsinglechannel_); 74 procms.SetVarianceLimits(par.vmin_, par.vmax_); 74 75 BRFFTCalculator procfft(mmgr, par.fgsinglechannel_); 75 76 if (!par.fgdatafft_) procms.SetMemZAction(MemZA_ProcB);
Note:
See TracChangeset
for help on using the changeset viewer.