Changeset 3683 in Sophya for trunk/AddOn/TAcq/brproc.cc
- Timestamp:
- Nov 27, 2009, 11:32:46 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brproc.cc
r3658 r3683 26 26 #include "brproc.h" 27 27 28 //--------------------------------------------------------------------- 29 // Classe de traitement - calcul de visibilite pour n fibres 30 //--------------------------------------------------------------------- 31 32 /* --Methode-- */ 33 BRVisibilityCalculator::BRVisibilityCalculator(RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean, 34 uint_4 freq1, uint_4 freq2, uint_4 nbfreq) 35 : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean), numfreq1_(freq1), numfreq2_(freq2), nbinfreq_(nbfreq) 36 { 37 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { 38 vframecount_.push_back(0); 39 vtimetag_.push_back(0); 40 vnpaqm_.push_back(0); 41 } 42 } 43 44 /* --Methode-- */ 45 BRVisibilityCalculator::~BRVisibilityCalculator() 46 { 47 } 48 49 /* --Methode-- */ 50 int BRVisibilityCalculator::Process() 51 { 52 } 28 53 29 54 //--------------------------------------------------------------- … … 35 60 36 61 /* --Methode-- */ 37 BRProcA Raw2C::BRProcARaw2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean,62 BRProcA2C::BRProcA2C(RAcqMemZoneMgr& mem, string& path, bool fgraw, uint_4 nmean, 38 63 uint_4 nmax, bool fghist, uint_4 nfsmap, bool fgnotrl, int card) 39 64 : memgr(mem) 40 65 { 66 fgraw_ = fgraw; 41 67 nmax_ = nmax; 42 68 nmean_ = nmean; 69 if (fgraw_) cout << " BRProcA2C::BRProcA2C() - constructeur RAW data - NMean=" << nmean_ << endl; 70 else cout << " BRProcA2C::BRProcA2C() - constructeur FFT data - NMean=" << nmean_ << endl; 43 71 nfsmap_ = nfsmap; 44 72 stop_ = false; … … 51 79 52 80 /* --Methode-- */ 53 void BRProcA Raw2C::Stop()81 void BRProcA2C::Stop() 54 82 { 55 83 stop_=true; 56 // cout <<" BRProcA Raw2C::Stop ... > STOP " << endl;84 // cout <<" BRProcA2C::Stop ... > STOP " << endl; 57 85 } 58 86 … … 67 95 } 68 96 /* --Methode-- */ 69 void BRProcA Raw2C::run()97 void BRProcA2C::run() 70 98 { 71 99 setRC(1); 72 100 try { 73 Timer tm("BRProcA Raw2C", false);101 Timer tm("BRProcA2C", false); 74 102 TimeStamp ts; 75 103 BRPaqChecker pcheck(!fgnotrl_); // Verification/comptage des paquets … … 78 106 size_t totnbytesproc = 0; 79 107 80 cout << " BRProcA Raw2C::run() - Starting " << ts << " NMaxMemZones=" << nmax_108 cout << " BRProcA2C::run() - Starting " << ts << " NMaxMemZones=" << nmax_ 81 109 << " NMean=" << nmean_ << card2name_(card_) << endl; 82 cout << " BRProcA Raw2C::run()... - Output Data Path: " << path_ << endl;110 cout << " BRProcA2C::run()... - Output Data Path: " << path_ << endl; 83 111 char fname[512]; 84 112 // sprintf(fname,"%s/proc.log",path_.c_str()); 85 113 // ofstream filog(fname); 86 // filog << " BRProcA Raw2C::run() - starting log file " << ts << endl;114 // filog << " BRProcA2C::run() - starting log file " << ts << endl; 87 115 // filog << " ... NMaxMemZones=" << nmax_ << " NMean=" << nmean_ << " Step=" << step_ << endl; 88 116 … … 94 122 double ms1,ms2,ms12,ms12re,ms12im,ms12phi; 95 123 ----*/ 96 // Time sample histograms 97 Histo h1(-0.5, 255.5, 256); 98 Histo h2(-0.5, 255.5, 256); 124 // Time sample (raw data) /FFT coeff histograms 125 Histo* ph1=NULL; 126 Histo* ph2=NULL; 127 if (fghist_) { 128 if (fgraw_) { 129 ph1 = new Histo(-0.5, 255.5, 256); 130 ph2 = new Histo(-0.5, 255.5, 256); 131 } 132 else { 133 ph1 = new Histo(-128.5, 128.5, 257); 134 ph2 = new Histo(-128.5, 128.5, 257); 135 } 136 } 137 99 138 // Initialisation pour calcul FFT 100 139 TVector< complex<r_4> > cfour1; // composant TF … … 132 171 timfreqV2.SetSize(nmean_, spectreV2.Size()/nfsmap_); 133 172 } 134 cout << " *DBG*BRProcA Raw2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz173 cout << " *DBG*BRProcA2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 135 174 << " procpaqsz/2=" << procpaqsz/2 << " cfour1.Size()=" << cfour1.Size() 136 175 << " *8=" << cfour1.Size()*8 << endl; … … 160 199 Byte* buff = memgr.GetMemZone(mid); 161 200 if (buff == NULL) { 162 cout << " BRProcA Raw2C::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl;201 cout << " BRProcA2C::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl; 163 202 break; 164 203 } 165 204 Byte* procbuff = memgr.GetProcMemZone(mid); 166 205 if (procbuff == NULL) { 167 cout << " BRProcA Raw2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl;206 cout << " BRProcA2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl; 168 207 break; 169 208 } … … 178 217 if (fghist_) { 179 218 for(sa_size_t j=0; j<vx.Size(); j++) { 180 r_4 vts=( r_4)(*(paq.Data1()+j));181 h1.Add((r_8)vts);219 r_4 vts=(fgraw_)?((r_4)(*(paq.Data1()+j))):((r_4)(*(paq.Data1S()+j))); 220 ph1->Add((r_8)vts); 182 221 moysig[0] += (double)vts; 183 222 sigsig[0] += ((double)vts)*((double)vts); 184 223 nbsig[0]++; 185 vx(j) = vts-127.5;186 224 } 187 } 188 else { 189 for(sa_size_t j=0; j<vx.Size(); j++) 190 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 191 } 192 // fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 193 fftwf_execute(plan1); 194 // complex<r_4>* zp1 = (complex<r_4>*)(vx.Data()); 195 // ffts.FFTForward(vx, cfour1); 196 for(sa_size_t j=0; j<spectreV1.Size(); j++) 197 spectreV1(j) += Zmod2(cfour1(j)); 198 memcpy(procbuff+i*procpaqsz, cfour1.Data(), sizeof(complex<r_4>)*cfour1.Size()); 199 if (fgtimfreq) { // Remplissage tableau temps-frequence 200 for(sa_size_t c=1; c<timfreqV1.NCols(); c++) { 201 for(sa_size_t j=c*nfsmap_; j<(c+1)*nfsmap_; j++) 202 timfreqV1(nzm, c) += Zmod2(cfour1(j)); 203 } 204 } 205 // Traitement voie 2 206 if (fghist_) { 207 for(sa_size_t j=0; j<vx.Size(); j++) { 208 r_4 vts=(r_4)(*(paq.Data2()+j)); 209 h2.Add((r_8)vts); 225 for(sa_size_t j=0; j<vx.Size(); j++) { 226 r_4 vts=(fgraw_)?((r_4)(*(paq.Data2()+j))):((r_4)(*(paq.Data2S()+j))); 227 ph2->Add((r_8)vts); 210 228 moysig[1] += (double)vts; 211 229 sigsig[1] += ((double)vts)*((double)vts); 212 230 nbsig[1]++; 213 vx(j) = vts-127.5;214 231 } 215 232 } 216 else { 217 for(sa_size_t j=0; j<vx.Size(); j++) 218 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 219 } 220 fftwf_execute(plan2); 233 if (fgraw_) { 234 for(sa_size_t j=0; j<vx.Size(); j++) 235 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 236 // fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 237 fftwf_execute(plan1); 238 // Traitement voie 2 239 for(sa_size_t j=0; j<vx.Size(); j++) 240 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 241 fftwf_execute(plan2); 242 } 243 else { 244 for(sa_size_t j=1; j<cfour1.Size()-1; j++) { 245 cfour1(j) = complex<r_4>((r_4)paq.Data1C()[j].realB(), (r_4)paq.Data1C()[j].imagB()); 246 cfour2(j) = complex<r_4>((r_4)paq.Data2C()[j].realB(), (r_4)paq.Data2C()[j].imagB()); 247 } 248 cfour1(0) = complex<r_4>((r_4)paq.Data1C()[0].realB(), (r_4)0.); 249 cfour1(cfour1.Size()-1) = complex<r_4>((r_4)paq.Data1C()[0].imagB(), (r_4)0.); 250 cfour2(0) = complex<r_4>((r_4)paq.Data2C()[0].realB(), (r_4)0.); 251 cfour2(cfour2.Size()-1) = complex<r_4>((r_4)paq.Data2C()[0].imagB(), (r_4)0.); 252 } 253 for(sa_size_t j=0; j<spectreV1.Size(); j++) 254 spectreV1(j) += Zmod2(cfour1(j)); 255 memcpy(procbuff+i*procpaqsz, cfour1.Data(), sizeof(complex<r_4>)*cfour1.Size()); 256 if (fgtimfreq) { // Remplissage tableau temps-frequence 257 for(sa_size_t c=1; c<timfreqV1.NCols(); c++) { 258 for(sa_size_t j=c*nfsmap_; j<(c+1)*nfsmap_; j++) 259 timfreqV1(nzm, c) += Zmod2(cfour1(j)); 260 } 261 } 221 262 for(sa_size_t j=0; j<spectreV2.Size(); j++) 222 263 spectreV2(j) += Zmod2(cfour2(j)); // Zmod2(zp2[j]); … … 314 355 po << PPFNameTag(tag12) << visiV12; 315 356 if (fghist_) { 316 po << PPFNameTag(tagh1) << h1;317 po << PPFNameTag(tagh2) << h2;357 po << PPFNameTag(tagh1) << (*ph1); 358 po << PPFNameTag(tagh2) << (*ph2); 318 359 319 360 double sspvmax[3] = {0.,0.,0.}; … … 354 395 visiV12 = complex<r_4>(0., 0.); 355 396 if (fghist_) { 356 h1.Zero();357 h2.Zero();397 ph1->Zero(); 398 ph2->Zero(); 358 399 moysig[0]=moysig[1]=0.; 359 400 sigsig[0]=sigsig[1]=0.; … … 367 408 // ts.SetNow(); 368 409 // filog << ts << " : proc file " << fname << endl; 369 cout << " BRProcA Raw2C::run() created file " << fname << card2name_(card_) << endl;410 cout << " BRProcA2C::run() created file " << fname << card2name_(card_) << endl; 370 411 } 371 412 372 413 memgr.FreeMemZone(mid, MemZS_ProcA); 373 414 } // Fin de boucle sur les zones a traiter 374 cout << " ------------ BRProcA Raw2C::run() END " << card2name_(card_)415 cout << " ------------ BRProcA2C::run() END " << card2name_(card_) 375 416 << " ------------ " << endl; 376 417 /*---- DELETE … … 381 422 POutPersist po(fname); 382 423 po << PPFNameTag("ntv12") << nt; 383 cout << " BRProcA Raw2C::run() created NTuple file " << fname << card2name_(card_) << endl;424 cout << " BRProcA2C::run() created NTuple file " << fname << card2name_(card_) << endl; 384 425 } 385 426 ---- */ … … 405 446 po << PPFNameTag("rsbV1") << rsbV1; 406 447 po << PPFNameTag("rsbV2") << rsbV2; 407 cout << " BRProcARaw2C::run() created moysigspec file " << fname << card2name_(card_) << endl; 408 } 409 448 cout << " BRProcA2C::run() created moysigspec file " << fname << card2name_(card_) << endl; 449 } 450 451 if (fghist_) { 452 delete ph1; 453 delete ph2; 454 } 410 455 ts.SetNow(); 411 456 tm.SplitQ(); … … 414 459 << " ProcDataOut=" << totnbytesout/(1024*1024) << " MB" << endl; 415 460 cout << pcheck; 416 cout << " BRProcA Raw2C::run()/Timing: " << card2name_(card_) << endl;461 cout << " BRProcA2C::run()/Timing: " << card2name_(card_) << endl; 417 462 tm.Print(); 418 463 cout << " ---------------------------------------------------------- " << endl; … … 420 465 } 421 466 catch (PException& exc) { 422 cout << " BRProcA Raw2C::run()/catched PException " << exc.Msg() << endl;467 cout << " BRProcA2C::run()/catched PException " << exc.Msg() << endl; 423 468 setRC(3); 424 469 return; 425 470 } 426 471 catch(...) { 427 cout << " BRProcA Raw2C::run()/catched unknown ... exception " << endl;472 cout << " BRProcA2C::run()/catched unknown ... exception " << endl; 428 473 setRC(4); 429 474 return; … … 434 479 435 480 //--------------------------------------------------------------------- 436 // Classe thread de traitement 2 x 2 voies/frames (Apres BRProcA Raw2C)481 // Classe thread de traitement 2 x 2 voies/frames (Apres BRProcA2C) 437 482 //--------------------------------------------------------------------- 438 483 439 484 /* --Methode-- */ 440 BRProcB Raw4C::BRProcBRaw4C(RAcqMemZoneMgr& mem1, RAcqMemZoneMgr& mem2,441 string& path, uint_4 nmean, uint_4 nmax, bool fgnotrl)485 BRProcB4C::BRProcB4C(RAcqMemZoneMgr& mem1, RAcqMemZoneMgr& mem2, string& path, 486 bool fgraw, uint_4 nmean, uint_4 nmax, bool fgnotrl) 442 487 : memgr1(mem1), memgr2(mem2) 443 488 { 489 fgraw_ = fgraw; 444 490 nmax_ = nmax; 445 491 nmean_ = nmean; 492 if (fgraw_) cout << " BRProcB4C::BRProcB4C() - constructeur RAW data - NMean= " << nmean_ << endl; 493 else cout << " BRProcB4C::BRProcB4C() - constructeur FFT data - NMean= " << nmean_ << endl; 446 494 stop_ = false; 447 495 path_ = path; … … 450 498 451 499 /* --Methode-- */ 452 void BRProcB Raw4C::Stop()500 void BRProcB4C::Stop() 453 501 { 454 502 stop_=true; 455 // cout <<" BRProcB Raw4C::Stop ... > STOP " << endl;456 } 457 458 459 /* --Methode-- */ 460 void BRProcB Raw4C::run()503 // cout <<" BRProcB4C::Stop ... > STOP " << endl; 504 } 505 506 507 /* --Methode-- */ 508 void BRProcB4C::run() 461 509 { 462 510 setRC(1); 463 511 try { 464 Timer tm("BRProcB Raw4C", false);512 Timer tm("BRProcB4C", false); 465 513 TimeStamp ts; 466 514 BRPaqChecker pcheck1(!fgnotrl_); // Verification/comptage des paquets … … 470 518 size_t totnbytesproc = 0; 471 519 472 cout << " BRProcB Raw4C::run() - Starting " << ts << " NMaxMemZones=" << nmax_520 cout << " BRProcB4C::run() - Starting " << ts << " NMaxMemZones=" << nmax_ 473 521 << " NMean=" << nmean_ << endl; 474 cout << " BRProcB Raw4C::run()... - Output Data Path: " << path_ << endl;522 cout << " BRProcB4C::run()... - Output Data Path: " << path_ << endl; 475 523 476 524 uint_4 paqsz = memgr1.PaqSize(); 477 525 uint_4 procpaqsz = memgr1.ProcPaqSize(); 478 526 if ((paqsz != memgr2.PaqSize())||(procpaqsz!= memgr2.ProcPaqSize())) { 479 cout << "BRProcB Raw4C::run()/ERROR : different paquet size -> stop \n ...(PaqSz1="527 cout << "BRProcB4C::run()/ERROR : different paquet size -> stop \n ...(PaqSz1=" 480 528 << paqsz << " Sz2=" << memgr2.PaqSize() << " ProcPaqSz1=" 481 529 << procpaqsz << " Sz2=" << memgr2.ProcPaqSize() << " )" << endl; … … 504 552 TVector< complex<r_4> > visiV24( szfour ); 505 553 // cout << " *DBG*AAAAA ---- Vectors OK" << endl; 506 cout << " *DBG*BRProcB Raw4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz554 cout << " *DBG*BRProcB4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 507 555 << " procpaqsz/2=" << procpaqsz/2 << " cfour.Size()=" << szfour 508 556 << " *8=" << szfour*8 << endl; … … 537 585 Byte* buff1 = memgr1.GetMemZone(mid1); 538 586 if (buff1 == NULL) { 539 cout << " BRProcB Raw4C::run()/ERROR memgr.GetMemZone(" << mid1 << ") -> NULL" << endl;587 cout << " BRProcB4C::run()/ERROR memgr.GetMemZone(" << mid1 << ") -> NULL" << endl; 540 588 break; 541 589 } 542 590 Byte* procbuff1 = memgr1.GetProcMemZone(mid1); 543 591 if (procbuff1 == NULL) { 544 cout << " BRProcB Raw4C::run()/ERROR memgr.GetProcMemZone(" << mid1 << ") -> NULL" << endl;592 cout << " BRProcB4C::run()/ERROR memgr.GetProcMemZone(" << mid1 << ") -> NULL" << endl; 545 593 break; 546 594 } … … 548 596 Byte* buff2 = memgr2.GetMemZone(mid2); 549 597 if (buff1 == NULL) { 550 cout << " BRProcB Raw4C::run()/ERROR memgr.GetMemZone(" << mid2 << ") -> NULL" << endl;598 cout << " BRProcB4C::run()/ERROR memgr.GetMemZone(" << mid2 << ") -> NULL" << endl; 551 599 break; 552 600 } 553 601 Byte* procbuff2 = memgr2.GetProcMemZone(mid2); 554 602 if (procbuff2 == NULL) { 555 cout << " BRProcB Raw4C::run()/ERROR memgr.GetProcMemZone(" << mid2 << ") -> NULL" << endl;603 cout << " BRProcB4C::run()/ERROR memgr.GetProcMemZone(" << mid2 << ") -> NULL" << endl; 556 604 break; 557 605 } … … 584 632 if (fgfirst) { 585 633 firsttt=paq1.TimeTag(); firsttt2=paq2.TimeTag(); 586 cout << " BRProcB Raw4C()/Info First FC="<<curfc<<" , "<<curfc2<<" -> TT="634 cout << " BRProcB4C()/Info First FC="<<curfc<<" , "<<curfc2<<" -> TT=" 587 635 << firsttt<<" , "<<firsttt2 <<endl; 588 636 fgfirst=false; … … 653 701 // ts.SetNow(); 654 702 // filog << ts << " : proc file " << fname << endl; 655 cout << " BRProcB Raw4C::run() created file " << fname << endl;703 cout << " BRProcB4C::run() created file " << fname << endl; 656 704 } 657 705 double okfrac = (nokpaq>1)?((double)noksfc/(double)nokpaq*100.):0.; 658 cout << "BRProcB Raw4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc706 cout << "BRProcB4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc 659 707 << " (" << okfrac << " %)" << endl; 660 708 totnokpaq += nokpaq; 661 709 totnoksfc += noksfc; 662 710 } // Fin de boucle sur les zones a traiter 663 cout << " ------------------ BRProcB Raw4C::run() END ----------------- " << endl;711 cout << " ------------------ BRProcB4C::run() END ----------------- " << endl; 664 712 { 665 713 dt.Info()["FirstTT1"]=firsttt; … … 670 718 POutPersist po(fname); 671 719 po << PPFNameTag("ttfc") << dt; 672 cout << " BRProcB Raw4C::run() created TimeTag/FrameCounter file " << fname << endl;720 cout << " BRProcB4C::run() created TimeTag/FrameCounter file " << fname << endl; 673 721 } 674 722 ts.SetNow(); … … 681 729 // cout << pcheck1; 682 730 // cout << pcheck2; 683 cout << " BRProcB Raw4C::run()/Timing: \n";731 cout << " BRProcB4C::run()/Timing: \n"; 684 732 tm.Print(); 685 733 cout << " ---------------------------------------------------------- " << endl; 686 734 } 687 735 catch (PException& exc) { 688 cout << " BRProcB Raw4C::run()/catched PException " << exc.Msg() << endl;736 cout << " BRProcB4C::run()/catched PException " << exc.Msg() << endl; 689 737 setRC(3); 690 738 return; 691 739 } 692 740 catch(...) { 693 cout << " BRProcB Raw4C::run()/catched unknown ... exception " << endl;741 cout << " BRProcB4C::run()/catched unknown ... exception " << endl; 694 742 setRC(4); 695 743 return;
Note:
See TracChangeset
for help on using the changeset viewer.