Changeset 3646 in Sophya for trunk/AddOn/TAcq/brproc.cc
- Timestamp:
- Jun 9, 2009, 11:50:46 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brproc.cc
r3645 r3646 9 9 #include "pexceptions.h" 10 10 #include "tvector.h" 11 #include "ntuple.h" 11 12 #include "fioarr.h" 12 13 #include "timestamp.h" … … 63 64 Timer tm("BRProcARaw2C", false); 64 65 TimeStamp ts; 65 BRPaqChecker pcheck( ~fgnotrl_); // Verification/comptage des paquets66 BRPaqChecker pcheck(!fgnotrl_); // Verification/comptage des paquets 66 67 67 68 size_t totnbytesout = 0; … … 77 78 // filog << " ... NMaxMemZones=" << nmax_ << " NMean=" << nmean_ << " Step=" << step_ << endl; 78 79 80 // NTuple 81 const char* nnames[8] = {"fcs","tts","s1","s2","s12","s12re","s12im","s12phi"}; 82 NTuple nt(8, nnames); 83 double xnt[10]; 84 uint_4 nmnt = 0; 85 double ms1,ms2,ms12,ms12re,ms12im,ms12phi; 79 86 // Initialisation pour calcul FFT 80 87 TVector< complex<r_4> > cfour1; // composant TF 81 88 uint_4 paqsz = memgr.PaqSize(); 82 89 uint_4 procpaqsz = memgr.ProcPaqSize(); 90 91 83 92 BRPaquet pq(NULL, NULL, paqsz); 84 93 TVector<r_4> vx(pq.DataSize()/2); … … 86 95 FFTPackServer ffts; 87 96 ffts.FFTForward(vx, cfour1); 97 // cfour1.SetSize((paqsz-40)/2+1); 88 98 TVector< complex<r_4> > cfour2(cfour1.Size()); 89 99 … … 92 102 TVector< complex<r_4> > visiV12( cfour1.Size() ); 93 103 104 cout << " *DBG*BRProcARaw2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 105 << " procpaqsz/2=" << procpaqsz/2 << " cfour1.Size()=" << cfour1.Size() 106 << " *8=" << cfour1.Size()*8 << endl; 94 107 95 108 fftwf_plan plan1 = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), … … 99 112 100 113 uint_4 ifile = 0; 101 uint_4 nzm = 0; 114 uint_4 nzm = 0; 102 115 for (uint_4 kmz=0; kmz<nmax_; kmz++) { 103 116 if (stop_) break; … … 113 126 break; 114 127 } 115 128 nmnt=0; ms1=ms2=ms12=ms12re=ms12im=ms12phi=0.; 116 129 for(uint_4 i=0; i<memgr.NbPaquets(); i++) { 117 130 BRPaquet paq(NULL, buff+i*paqsz, paqsz); 118 131 if (!pcheck.Check(paq)) continue; // on ne traite que les paquets OK 119 132 120 133 // Traitement voie 1 121 for(sa_size_t j=0; j<vx.Size(); j++)122 vx(j) = (r_4)(*(paq.Data1()+j))-127.5;134 for(sa_size_t j=0; j<vx.Size(); j++) 135 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 123 136 // fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 124 fftwf_execute(plan1);125 // complex<r_4>* zp1 = (complex<r_4>*)(coeff1);137 fftwf_execute(plan1); 138 // complex<r_4>* zp1 = (complex<r_4>*)(vx.Data()); 126 139 // ffts.FFTForward(vx, cfour1); 127 140 for(sa_size_t j=0; j<spectreV1.Size(); j++) … … 129 142 memcpy(procbuff+i*procpaqsz, cfour1.Data(), sizeof(complex<r_4>)*cfour1.Size()); 130 143 // Traitement voie 2 131 for(sa_size_t j=0; j<vx.Size(); j++) 132 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 133 134 fftwf_execute(plan2); 135 144 for(sa_size_t j=0; j<vx.Size(); j++) 145 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 146 147 fftwf_execute(plan2); 136 148 for(sa_size_t j=0; j<spectreV2.Size(); j++) 137 149 spectreV2(j) += Zmod2(cfour2(j)); // Zmod2(zp2[j]); … … 143 155 // for(sa_size_t j=0; j<visiV12.Size(); j++) visiV12(j)+=zp1[j]*zp2[j]; 144 156 nzm++; 157 if (nmnt==0) { xnt[0]=paq.FrameCounter(); xnt[1]=paq.TimeTag(); } 158 for(sa_size_t j=2700; j<2800; j++) { 159 ms1 += Zmod2(cfour1(j)); ms2 += Zmod2(cfour2(j)); 160 complex<r_4> zvis = cfour1(j)*conj(cfour2(j)); 161 ms12 += Zmod2(zvis); ms12re += zvis.real(); ms12im += zvis.imag(); 162 ms12phi+= atan2(zvis.imag(),zvis.real()); 163 } 164 nmnt++; 145 165 totnbytesproc += paq.DataSize(); 146 166 totnbytesout += (2*sizeof(complex<r_4>)*cfour1.Size()); 147 167 148 168 } // Fin de boucle sur les paquets d'une zone 169 if (nmnt>0) { 170 double fnorm = (double)nmnt*(2800-2700); 171 xnt[2] = ms1 /= fnorm; 172 xnt[3] = ms2 /= fnorm; 173 xnt[4] = ms12 /= fnorm; 174 xnt[5] = ms12re /= fnorm; 175 xnt[6] = ms12im /= fnorm; 176 xnt[7] = ms12phi /= fnorm; 177 nt.Fill(xnt); 178 } 149 179 if ((nzm >= nmean_) || ((kmz==(nmax_-1))&&(nzm>1))) { 150 180 spectreV1 /= (r_4)(nzm); … … 184 214 cout << " ------------ BRProcARaw2C::run() END " << card2name_(card_) 185 215 << " ------------ " << endl; 216 { 217 cout << nt; 218 sprintf(fname,"%s_nt.ppf",path_.c_str()); 219 POutPersist po(fname); 220 po << PPFNameTag("ntv12") << nt; 221 cout << " BRProcARaw2C::run() created NTuple file " << fname << card2name_(card_) << endl; 222 } 186 223 ts.SetNow(); 187 224 tm.SplitQ(); … … 240 277 Timer tm("BRProcBRaw4C", false); 241 278 TimeStamp ts; 242 BRPaqChecker pcheck1( ~fgnotrl_); // Verification/comptage des paquets243 BRPaqChecker pcheck2( ~fgnotrl_); // Verification/comptage des paquets279 BRPaqChecker pcheck1(!fgnotrl_); // Verification/comptage des paquets 280 BRPaqChecker pcheck2(!fgnotrl_); // Verification/comptage des paquets 244 281 245 282 size_t totnbytesout = 0; … … 261 298 262 299 TVector< complex<r_4> > cfour; // composant TF 263 BRPaquet pq(NULL, NULL, paqsz); 300 /* 301 BRPaquet pq(NULL, NULL, paqsz); 264 302 TVector<r_4> vx(pq.DataSize()/2); 265 303 vx = (r_4)(0.); … … 271 309 TVector< complex<r_4> > visiV23( cfour.Size() ); 272 310 TVector< complex<r_4> > visiV24( cfour.Size() ); 311 */ 312 int szfour = (paqsz-40)/2+1; 313 TVector< complex<r_4> > visiV13( szfour ); 314 TVector< complex<r_4> > visiV14( szfour ); 315 TVector< complex<r_4> > visiV23( szfour ); 316 TVector< complex<r_4> > visiV24( szfour ); 317 // cout << " *DBG*AAAAA ---- Vectors OK" << endl; 318 cout << " *DBG*BRProcBRaw4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 319 << " procpaqsz/2=" << procpaqsz/2 << " cfour.Size()=" << szfour 320 << " *8=" << szfour*8 << endl; 273 321 274 322 uint_4 nzm = 0; … … 281 329 uint_4 nokpaq = 0; 282 330 if (stop_) break; 331 // cout << " *DBG*BBBBB" << kmz << endl; 332 283 333 int mid1 = memgr1.FindMemZoneId(MemZA_ProcB); 284 334 Byte* buff1 = memgr1.GetMemZone(mid1); … … 305 355 uint_4 i1,i2; 306 356 i1=i2=0; 357 // cout << " *DBG*CCCCCC " << kmz << " memgr1.NbPaquets() =" << memgr1.NbPaquets() << endl; 307 358 while((i1<memgr1.NbPaquets())&&(i2<memgr2.NbPaquets())) { 308 359 BRPaquet paq1(NULL, buff1+i1*paqsz, paqsz); … … 320 371 // <<","<<paq2.FrameCounter()<<endl; 321 372 373 if ((i1>=memgr1.NbPaquets())||(i2>=memgr1.NbPaquets())) { 374 cout << " *BUG*BUG i1=" << i1 << " i2=" << i2 << endl; 375 break; 376 } 322 377 // Les deux framecounters sont identiques ... 323 378 noksfc++; … … 335 390 totnbytesproc += 2*paq1.DataSize(); 336 391 } // Fin de boucle sur les paquets d'une zone 392 memgr1.FreeMemZone(mid1, MemZS_ProcB); 393 memgr2.FreeMemZone(mid2, MemZS_ProcB); 394 337 395 if ((nzm >= nmean_) || ((kmz==(nmax_-1))&&(nzm>1))) { 338 396 visiV13 /= complex<r_4>((r_4)nzm, 0.); … … 357 415 visiV23 = complex<r_4>(0., 0.); 358 416 visiV24 = complex<r_4>(0., 0.); 359 nzm = 0; 417 nzm = 0; ifile++; 360 418 // ts.SetNow(); 361 419 // filog << ts << " : proc file " << fname << endl; 362 420 cout << " BRProcBRaw4C::run() created file " << fname << endl; 363 421 } 364 memgr1.FreeMemZone(mid1, MemZS_ProcB);365 memgr2.FreeMemZone(mid2, MemZS_ProcB);366 422 double okfrac = (nokpaq>1)?((double)noksfc/(double)nokpaq*100.):0.; 367 cout << "BRProcBRaw 2C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc423 cout << "BRProcBRaw4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc 368 424 << " (" << okfrac << " %)" << endl; 369 425 totnokpaq += nokpaq;
Note:
See TracChangeset
for help on using the changeset viewer.