Changeset 3774 in Sophya


Ignore:
Timestamp:
May 17, 2010, 5:18:10 PM (15 years ago)
Author:
ansari
Message:

Ajout/modif classes (brproc.h,.cc) pour analyse de donnees BAORadio, Reza 17/05/2010

Location:
trunk/AddOn/TAcq
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/branap.cc

    r3724 r3774  
    120120    return 5;
    121121  }
    122   cout << " -act Action: cube3d or vis or viscktt \n"
     122  cout << " -act Action: cube3d or vis or viscktt or mspec \n"
    123123       << "    cube3d: create 3D fits cubes, vis: compute visibilites,  \n"
    124124       << "    viscktt: compute visibilities and check TimeTag/FrameCounter\n "
     125       << "    mspec: compute and save mean spectra for each channel \n "
    125126       << " -out OutPath: Output directory name \n"
    126127       << " -nmean NMean: Number of packet used for spectra/visibility computation \n"
  • trunk/AddOn/TAcq/brbaseproc.cc

    r3696 r3774  
    1717
    1818/* --Methode-- */
    19 BRBaseProcessor::BRBaseProcessor(RAcqMemZoneMgr& memgr)
     19BRBaseProcessor::BRBaseProcessor(RAcqMemZoneMgr& memgr, MemZaction mmact)
    2020  : memgr_(memgr), vpaq_(memgr.NbFibres()), vpchk_(memgr.NbFibres()), vfgok_(memgr.NbFibres()),
    2121    curfc_(memgr.NbFibres()), fcfirst_(memgr.NbFibres()), ttfirst_(memgr.NbFibres())
    2222{
     23  SetMemZAction(mmact);
    2324  stop_ = false;
    2425  for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)  {
     
    3334  fgokallfibers_=true;
    3435  totprocnpaq_=0;
     36}
     37
     38/* --Methode-- */
     39MemZStatus 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_;
    3568}
    3669
     
    4982      if (stop_) break;
    5083      if (memgr_.GetRunState() == MemZR_Stopped) break;
    51       int mid = memgr_.FindMemZoneId(MemZA_ProcA);
     84      int mid = memgr_.FindMemZoneId(mmact_);  // (MemZA_ProcA);
    5285      Byte* buffg = memgr_.GetMemZone(mid);
    5386      if (buffg == NULL) {
     
    85118        //      if (rcp != 0)   { fgrun=false; break; }
    86119      }  // Fin de boucle sur les paquets
    87       memgr_.FreeMemZone(mid, MemZS_ProcA);
     120      memgr_.FreeMemZone(mid, mmsta_);   // (MemZS_ProcA);
    88121    } // Fin de boucle sur les zones a traiter
    89122    //------------------------------------
  • trunk/AddOn/TAcq/brbaseproc.h

    r3703 r3774  
    2424class BRBaseProcessor : public SOPHYA::ZThread {
    2525public:
    26   BRBaseProcessor(RAcqMemZoneMgr& memgr);
     26  BRBaseProcessor(RAcqMemZoneMgr& memgr, MemZaction mmact=MemZA_ProcA);
     27 
     28  MemZStatus SetMemZAction(MemZaction mmact=MemZA_ProcA);
    2729
    2830  virtual void run();
     
    3537
    3638  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)
    3741  bool stop_;
    3842  vector<Byte*> fbuff_;      // Vecteur de pointeur de zone memoire pour chaque fibre
  • trunk/AddOn/TAcq/brpaqu.h

    r3694 r3774  
    5858  inline double realD() { return  (double)(val_)[0]; }
    5959  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]); }
    6063
    6164  SByte val_[2];
  • trunk/AddOn/TAcq/brproc.cc

    r3726 r3774  
    131131      if (stop_) break;
    132132      if (memgr_.GetRunState() == MemZR_Stopped) break;
    133       int mid = memgr_.FindMemZoneId(MemZA_ProcA);
     133      int mid = memgr_.FindMemZoneId(mmact_);  // (MemZA_ProcA);
    134134      Byte* buffg = memgr_.GetMemZone(mid);
    135135      if (buffg == NULL) {
     
    141141        fbuff_[fib] = memgr_.GetMemZone(mid,fib);
    142142        if (fbuff_[fib] == NULL) { // cela ne devrait pas arriver
    143           cout << "BRBaseProcessor::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl;
     143          cout << "BRVisibilityCalculator::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl;
    144144          setRC(9);       fgrun=false;         
    145145          break;
     
    196196      if (rcpex!=0)  cout << " BRVisibilityCalculator::run() / Error Rc[paralex_.execute()]=" << rcpex << endl;
    197197
    198       memgr_.FreeMemZone(mid, MemZS_ProcA);
     198      memgr_.FreeMemZone(mid, mmsta_);  // (MemZS_ProcA);
    199199    } // Fin de boucle sur les zones a traiter
    200200    //------------------------------------
     
    207207  }
    208208  catch (std::exception& exc) {
    209     cout << " BRBaseProcessor::run()/catched std::exception " << exc.what() << endl;
     209    cout << " BRVisibilityCalculator::run()/catched std::exception " << exc.what() << endl;
    210210    setRC(98); 
    211211    return;
    212212  }
    213213  catch(...) {
    214     cout << " BRBaseProcessor::run()/catched unknown ... exception " << endl;
     214    cout << " BRVisibilityCalculator::run()/catched unknown ... exception " << endl;
    215215    setRC(99); 
    216216    return;
     
    397397  return 0;
    398398}
     399
     400
     401//---------------------------------------------------------------------
     402// Classe de traitement simple - calcul de spectres moyennes / voie
     403//---------------------------------------------------------------------
     404/* --Methode-- */
     405BRMeanSpecCalculator::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-- */
     415BRMeanSpecCalculator::~BRMeanSpecCalculator()
     416{
     417}
     418
     419
     420/* --Methode-- */
     421int 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
    399454
    400455//---------------------------------------------------------------
  • trunk/AddOn/TAcq/brproc.h

    r3726 r3774  
    7979
    8080
     81//---------------------------------------------------------------------
     82// Classe de traitement simple - calcul de spectres moyennes / voie
     83//---------------------------------------------------------------------
     84class BRMeanSpecCalculator : public BRBaseProcessor
     85{
     86public:
     87  BRMeanSpecCalculator(RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean=1000);
     88  virtual ~BRMeanSpecCalculator(); // Fait le nettoyage final , sauvegarde des objets ...
     89
     90protected:
     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
    81101//-------------------------------------------------------------------------
    82102//    **** OBSOLETE : BRProcA2C et BRProcB4C
  • trunk/AddOn/TAcq/vismfib.cc

    r3724 r3774  
    6565                                par.nbinfreq_, par.nthreads_);
    6666    if (par.action_ == "viscktt")  proc.ActivateTimeTagCheck(par.TotalNPaquets());
     67    BRMeanSpecCalculator procms(mmgr, par.outpath_, par.nmean_);
    6768    FitsCubeWriter wrt(mmgr, par.outpath_, par.nbloc_);
    6869    //    BRBaseProcessor proc(mmgr);
     
    7172    reader.start();
    7273    if (par.action_ == "cube3d")   wrt.start();
     74    else if (par.action_ == "mspec")   procms.start();
    7375    else  proc.start();
    7476    usleep(200000);
    7577    reader.join();
    7678    if (par.action_ == "cube3d")  wrt.join();
     79    else if (par.action_ == "mspec")  procms.join();
    7780    else proc.join();
    7881    mmgr.Print(cout);
Note: See TracChangeset for help on using the changeset viewer.