Changeset 3640 in Sophya for trunk/AddOn/TAcq/brproc.cc
- Timestamp:
- May 27, 2009, 5:15:45 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brproc.cc
r3635 r3640 26 26 //--------------------------------------------------------------- 27 27 28 BRProcARaw2C::BRProcARaw2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean, uint_4 step, uint_4 nmax) 28 BRProcARaw2C::BRProcARaw2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean, 29 uint_4 step, uint_4 nmax, bool fgnotrl) 29 30 : memgr(mem) 30 31 { … … 34 35 stop_ = false; 35 36 path_ = path; 37 fgnotrl_ = fgnotrl; 36 38 } 37 39 … … 50 52 setRC(1); 51 53 try { 52 Timer tm("BRProcARaw2C" );54 Timer tm("BRProcARaw2C", false); 53 55 TimeStamp ts; 56 BRPaqChecker pcheck(~fgnotrl_); // Verification/comptage des paquets 57 58 size_t totnbytesout = 0; 59 size_t totnbytesproc = 0; 60 54 61 cout << " BRProcARaw2C::run() - Starting " << ts << " NMaxMemZones=" << nmax_ 55 62 << " NMean=" << nmean_ << " Step=" << step_ << endl; … … 62 69 63 70 // Initialisation pour calcul FFT 64 TVector< complex<r_4> > cfour ; // composant TF71 TVector< complex<r_4> > cfour1; // composant TF 65 72 uint_4 paqsz = memgr.PaqSize(); 66 73 uint_4 procpaqsz = memgr.ProcPaqSize(); … … 69 76 vx = (r_4)(0.); 70 77 FFTPackServer ffts; 71 ffts.FFTForward(vx, cfour); 72 TVector<r_4> spectreV1, spectreV2; 73 74 spectreV1.ReSize(cfour.Size()); 75 spectreV2.ReSize(cfour.Size()); 78 ffts.FFTForward(vx, cfour1); 79 TVector< complex<r_4> > cfour2(cfour1.Size()); 76 80 77 TVector< complex<r_4> > visiV12( cfour.Size() ); 81 TVector<r_4> spectreV1(cfour1.Size()); 82 TVector<r_4> spectreV2(cfour1.Size()); 83 TVector< complex<r_4> > visiV12( cfour1.Size() ); 78 84 85 86 fftwf_plan plan1 = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), 87 (fftwf_complex*)cfour1.Data(), FFTW_ESTIMATE); 88 fftwf_plan plan2 = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), 89 (fftwf_complex*)cfour2.Data(), FFTW_ESTIMATE); 79 90 80 91 uint_4 ifile = 0; … … 85 96 Byte* buff = memgr.GetMemZone(mid); 86 97 if (buff == NULL) { 87 88 break;98 cout << " BRProcARaw2C::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl; 99 break; 89 100 } 90 101 Byte* procbuff = memgr.GetProcMemZone(mid); 91 102 if (procbuff == NULL) { 92 cout << " BRProcARaw2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl;93 103 cout << " BRProcARaw2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl; 104 break; 94 105 } 95 BRPaquet paq0(NULL, buff, paqsz); 106 96 107 for(uint_4 i=0; i<memgr.NbPaquets(); i+=step_) { 97 BRPaquet paq(NULL, buff+i*paqsz, paqsz); 98 Byte min = 255; 99 Byte max = 0; 100 108 BRPaquet paq(NULL, buff+i*paqsz, paqsz); 109 if (!pcheck.Check(paq)) continue; // on ne traite que les paquets OK 110 101 111 // Traitement voie 1 102 for(sa_size_t j=0; j<vx.Size(); j++) 103 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 104 fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 105 fftwf_plan plan = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), coeff1, FFTW_ESTIMATE); 106 fftwf_execute(plan); 107 // ffts_.FFTForward(vx, cfour_); 108 complex<r_4>* zp1 = (complex<r_4>*)(coeff1); 112 for(sa_size_t j=0; j<vx.Size(); j++) 113 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 114 // fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 115 fftwf_execute(plan1); 116 // complex<r_4>* zp1 = (complex<r_4>*)(coeff1); 117 // ffts.FFTForward(vx, cfour1); 109 118 for(sa_size_t j=0; j<spectreV1.Size(); j++) 110 spectreV1(j) += Zmod2( zp1[j]);111 119 spectreV1(j) += Zmod2(cfour1(j)); 120 memcpy(procbuff+i*procpaqsz, cfour1.Data(), sizeof(complex<r_4>)*cfour1.Size()); 112 121 // Traitement voie 2 113 for(sa_size_t j=0; j<vx.Size(); j++) 114 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 115 fftwf_complex* coeff2 = (fftwf_complex*)(procbuff+i*procpaqsz+procpaqsz/2); 116 plan = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), coeff2, FFTW_ESTIMATE); 117 fftwf_execute(plan); 118 // ffts_.FFTForward(vx, cfour_); 119 complex<r_4>* zp2 = (complex<r_4>*)(coeff2); 122 for(sa_size_t j=0; j<vx.Size(); j++) 123 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 124 125 fftwf_execute(plan2); 126 120 127 for(sa_size_t j=0; j<spectreV2.Size(); j++) 121 spectreV2(j) += Zmod2(zp2[j]); 128 spectreV2(j) += Zmod2(cfour2(j)); // Zmod2(zp2[j]); 129 memcpy(procbuff+i*procpaqsz+procpaqsz/2, cfour2.Data(), sizeof(complex<r_4>)*cfour2.Size()); 122 130 123 131 // Calcul correlation (visibilite V1 * V2) 124 for(sa_size_t j=0; j<visiV12.Size(); j++) visiV12(j)+=zp1[j]*zp2[j]; 132 for(sa_size_t j=0; j<visiV12.Size(); j++) 133 visiV12(j)+=cfour1(j)*conj(cfour2(j)); 134 // for(sa_size_t j=0; j<visiV12.Size(); j++) visiV12(j)+=zp1[j]*zp2[j]; 135 nzm++; 136 totnbytesproc += paq.DataSize(); 137 totnbytesout += (2*sizeof(complex<r_4>)*cfour1.Size()); 125 138 126 nzm++; 127 } 128 if ((nzm >= nmean_) ||(kmz==(nmax_-1))) { 139 } // Fin de boucle sur les paquets d'une zone 140 if ((nzm >= nmean_) || ((kmz==(nmax_-1))&&(nzm>1))) { 129 141 spectreV1 /= (r_4)(nzm); 130 142 spectreV2 /= (r_4)(nzm); … … 135 147 spectreV2.Info()["NPaqMoy"] = nzm; 136 148 visiV12.Info()["NPaqMoy"] = nzm; 137 {149 { 138 150 sprintf(fname,"%s_%d.ppf",path_.c_str(),(int)ifile); 139 151 POutPersist po(fname); … … 141 153 po << PPFNameTag("specV2") << spectreV2; 142 154 po << PPFNameTag("visiV12") << visiV12; 143 }155 } 144 156 spectreV1 = (r_4)(0.); 145 157 spectreV2 = (r_4)(0.); … … 149 161 // filog << ts << " : proc file " << fname << endl; 150 162 cout << " BRProcARaw2C::run() created file " << fname << endl; 151 } 163 } 152 164 153 165 memgr.FreeMemZone(mid, MemZS_ProcA); 154 } 166 } // Fin de boucle sur les zones a traiter 167 cout << " ------------------ BRProcARaw2C::run() END ----------------- " << endl; 168 ts.SetNow(); 169 tm.SplitQ(); 170 cout << " TotalProc= " << totnbytesproc/(1024*1024) << " MBytes, rate= " 171 << (double)(totnbytesproc)/1024./tm.PartialElapsedTimems() << " MB/s" 172 << " ProcDataOut=" << totnbytesout/(1024*1024) << " MB" << endl; 173 cout << pcheck; 174 cout << " BRProcARaw2C::run()/Timing: \n"; 175 tm.Print(); 176 cout << " ---------------------------------------------------------- " << endl; 177 155 178 } 156 179 catch (PException& exc) {
Note:
See TracChangeset
for help on using the changeset viewer.