Changeset 3774 in Sophya for trunk/AddOn/TAcq
- Timestamp:
- May 17, 2010, 5:18:10 PM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/branap.cc
r3724 r3774 120 120 return 5; 121 121 } 122 cout << " -act Action: cube3d or vis or viscktt \n"122 cout << " -act Action: cube3d or vis or viscktt or mspec \n" 123 123 << " cube3d: create 3D fits cubes, vis: compute visibilites, \n" 124 124 << " viscktt: compute visibilities and check TimeTag/FrameCounter\n " 125 << " mspec: compute and save mean spectra for each channel \n " 125 126 << " -out OutPath: Output directory name \n" 126 127 << " -nmean NMean: Number of packet used for spectra/visibility computation \n" -
trunk/AddOn/TAcq/brbaseproc.cc
r3696 r3774 17 17 18 18 /* --Methode-- */ 19 BRBaseProcessor::BRBaseProcessor(RAcqMemZoneMgr& memgr )19 BRBaseProcessor::BRBaseProcessor(RAcqMemZoneMgr& memgr, MemZaction mmact) 20 20 : memgr_(memgr), vpaq_(memgr.NbFibres()), vpchk_(memgr.NbFibres()), vfgok_(memgr.NbFibres()), 21 21 curfc_(memgr.NbFibres()), fcfirst_(memgr.NbFibres()), ttfirst_(memgr.NbFibres()) 22 22 { 23 SetMemZAction(mmact); 23 24 stop_ = false; 24 25 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { … … 33 34 fgokallfibers_=true; 34 35 totprocnpaq_=0; 36 } 37 38 /* --Methode-- */ 39 MemZStatus BRBaseProcessor::SetMemZAction(MemZaction mmact) 40 { 41 mmact_=mmact; 42 mmsta_=MemZS_ProcA; 43 switch (mmact) { 44 case MemZA_ProcA: 45 mmsta_=MemZS_ProcA; 46 break; 47 case MemZA_ProcB: 48 mmsta_=MemZS_ProcB; 49 break; 50 case MemZA_ProcC: 51 mmsta_=MemZS_ProcC; 52 break; 53 case MemZA_ProcD: 54 mmsta_=MemZS_ProcD; 55 break; 56 case MemZA_ProcE: 57 mmsta_=MemZS_ProcE; 58 break; 59 case MemZA_ProcF: 60 mmsta_=MemZS_ProcF; 61 break; 62 default: 63 mmact_=MemZA_ProcA; 64 mmsta_=MemZS_ProcA; 65 break; 66 } 67 return mmsta_; 35 68 } 36 69 … … 49 82 if (stop_) break; 50 83 if (memgr_.GetRunState() == MemZR_Stopped) break; 51 int mid = memgr_.FindMemZoneId( MemZA_ProcA);84 int mid = memgr_.FindMemZoneId(mmact_); // (MemZA_ProcA); 52 85 Byte* buffg = memgr_.GetMemZone(mid); 53 86 if (buffg == NULL) { … … 85 118 // if (rcp != 0) { fgrun=false; break; } 86 119 } // Fin de boucle sur les paquets 87 memgr_.FreeMemZone(mid, MemZS_ProcA);120 memgr_.FreeMemZone(mid, mmsta_); // (MemZS_ProcA); 88 121 } // Fin de boucle sur les zones a traiter 89 122 //------------------------------------ -
trunk/AddOn/TAcq/brbaseproc.h
r3703 r3774 24 24 class BRBaseProcessor : public SOPHYA::ZThread { 25 25 public: 26 BRBaseProcessor(RAcqMemZoneMgr& memgr); 26 BRBaseProcessor(RAcqMemZoneMgr& memgr, MemZaction mmact=MemZA_ProcA); 27 28 MemZStatus SetMemZAction(MemZaction mmact=MemZA_ProcA); 27 29 28 30 virtual void run(); … … 35 37 36 38 RAcqMemZoneMgr& memgr_; 39 MemZaction mmact_; // Definition de l'action sur les paquets (defaut=MemZA_ProcA) 40 MemZStatus mmsta_; // Statut associe a mmact_ (defaut=MemZS_ProcA) 37 41 bool stop_; 38 42 vector<Byte*> fbuff_; // Vecteur de pointeur de zone memoire pour chaque fibre -
trunk/AddOn/TAcq/brpaqu.h
r3694 r3774 58 58 inline double realD() { return (double)(val_)[0]; } 59 59 inline double imagD() { return (double)(val_)[1]; } 60 61 inline float module2F() { return ((float)(val_)[0]*(float)(val_)[0]+(float)(val_)[1]*(float)(val_)[1]); } 62 inline double module2D() { return ((double)(val_)[0]*(double)(val_)[0]+(double)(val_)[1]*(double)(val_)[1]); } 60 63 61 64 SByte val_[2]; -
trunk/AddOn/TAcq/brproc.cc
r3726 r3774 131 131 if (stop_) break; 132 132 if (memgr_.GetRunState() == MemZR_Stopped) break; 133 int mid = memgr_.FindMemZoneId( MemZA_ProcA);133 int mid = memgr_.FindMemZoneId(mmact_); // (MemZA_ProcA); 134 134 Byte* buffg = memgr_.GetMemZone(mid); 135 135 if (buffg == NULL) { … … 141 141 fbuff_[fib] = memgr_.GetMemZone(mid,fib); 142 142 if (fbuff_[fib] == NULL) { // cela ne devrait pas arriver 143 cout << "BR BaseProcessor::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl;143 cout << "BRVisibilityCalculator::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl; 144 144 setRC(9); fgrun=false; 145 145 break; … … 196 196 if (rcpex!=0) cout << " BRVisibilityCalculator::run() / Error Rc[paralex_.execute()]=" << rcpex << endl; 197 197 198 memgr_.FreeMemZone(mid, MemZS_ProcA);198 memgr_.FreeMemZone(mid, mmsta_); // (MemZS_ProcA); 199 199 } // Fin de boucle sur les zones a traiter 200 200 //------------------------------------ … … 207 207 } 208 208 catch (std::exception& exc) { 209 cout << " BR BaseProcessor::run()/catched std::exception " << exc.what() << endl;209 cout << " BRVisibilityCalculator::run()/catched std::exception " << exc.what() << endl; 210 210 setRC(98); 211 211 return; 212 212 } 213 213 catch(...) { 214 cout << " BR BaseProcessor::run()/catched unknown ... exception " << endl;214 cout << " BRVisibilityCalculator::run()/catched unknown ... exception " << endl; 215 215 setRC(99); 216 216 return; … … 397 397 return 0; 398 398 } 399 400 401 //--------------------------------------------------------------------- 402 // Classe de traitement simple - calcul de spectres moyennes / voie 403 //--------------------------------------------------------------------- 404 /* --Methode-- */ 405 BRMeanSpecCalculator::BRMeanSpecCalculator(RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean) 406 : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean) 407 { 408 BRPaquet paq(memgr_.PaqSize()); 409 mspecmtx_.SetSize(2*memgr_.NbFibres(), paq.DataSize()/4); 410 numfile_=0; 411 totnbpaq_=0; 412 } 413 414 /* --Methode-- */ 415 BRMeanSpecCalculator::~BRMeanSpecCalculator() 416 { 417 } 418 419 420 /* --Methode-- */ 421 int BRMeanSpecCalculator::Process() 422 { 423 424 if (totnbpaq_%nmean_ == 0) { 425 if (totnbpaq_ > 0) { 426 mspecmtx_.Info()["NPAQSUM"] = nmean_; 427 mspecmtx_ /= (double)nmean_; 428 char nfile[32]; 429 sprintf(nfile,"mspecmtx%d.ppf",numfile_); 430 string flnm=outpath_+nfile; 431 POutPersist po(flnm); 432 po << mspecmtx_; 433 cout << numfile_ << "-BRMeanSpecCalculator::Process() NPaqProc=" 434 << totnbpaq_ << " -> Mean spectra Matrix in " << flnm << endl; 435 numfile_++; 436 } 437 mspecmtx_ = (r_8)(0.); 438 } 439 440 sa_size_t k=0; 441 for(size_t i=0; i<(size_t)2*memgr_.NbFibres(); i++) { 442 TwoByteComplex* zp=vpaq_[i/2].Data1C(); 443 if (i%2==1) zp=vpaq_[i/2].Data2C(); 444 TVector< r_4 > spec = mspecmtx_.Row(k); k++; 445 for(sa_size_t f=1; f<spec.Size(); f++) { 446 spec(f) += zp[f].module2F(); 447 } 448 } 449 450 totnbpaq_++; 451 return 0; 452 } 453 399 454 400 455 //--------------------------------------------------------------- -
trunk/AddOn/TAcq/brproc.h
r3726 r3774 79 79 80 80 81 //--------------------------------------------------------------------- 82 // Classe de traitement simple - calcul de spectres moyennes / voie 83 //--------------------------------------------------------------------- 84 class BRMeanSpecCalculator : public BRBaseProcessor 85 { 86 public: 87 BRMeanSpecCalculator(RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean=1000); 88 virtual ~BRMeanSpecCalculator(); // Fait le nettoyage final , sauvegarde des objets ... 89 90 protected: 91 virtual int Process(); 92 93 uint_4 nmean_; // Nombre de spectres pour le calcul des moyennes 94 string outpath_; // directory pour fichiers de sortie 95 uint_4 numfile_; 96 97 uint_8 totnbpaq_; 98 TMatrix< r_4 > mspecmtx_; // Matrice des spectres moyennees 99 }; 100 81 101 //------------------------------------------------------------------------- 82 102 // **** OBSOLETE : BRProcA2C et BRProcB4C -
trunk/AddOn/TAcq/vismfib.cc
r3724 r3774 65 65 par.nbinfreq_, par.nthreads_); 66 66 if (par.action_ == "viscktt") proc.ActivateTimeTagCheck(par.TotalNPaquets()); 67 BRMeanSpecCalculator procms(mmgr, par.outpath_, par.nmean_); 67 68 FitsCubeWriter wrt(mmgr, par.outpath_, par.nbloc_); 68 69 // BRBaseProcessor proc(mmgr); … … 71 72 reader.start(); 72 73 if (par.action_ == "cube3d") wrt.start(); 74 else if (par.action_ == "mspec") procms.start(); 73 75 else proc.start(); 74 76 usleep(200000); 75 77 reader.join(); 76 78 if (par.action_ == "cube3d") wrt.join(); 79 else if (par.action_ == "mspec") procms.join(); 77 80 else proc.join(); 78 81 mmgr.Print(cout);
Note:
See TracChangeset
for help on using the changeset viewer.