Changeset 3692 in Sophya for trunk/AddOn


Ignore:
Timestamp:
Nov 29, 2009, 11:54:32 PM (16 years ago)
Author:
ansari
Message:

Calcul visibilites presque complet (classe BRVisibilityCalculator) Reza 29/11/2009

Location:
trunk/AddOn/TAcq
Files:
4 edited

Legend:

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

    r3688 r3692  
    3434  int ka=1;
    3535  while (ka<(narg-1)) {
    36     cout << " *DBG ka=" << ka << " narg=" << narg << " arg[ka]=" << arg[ka] << endl;
    3736    if (strcmp(arg[ka],"-act")==0) {
    3837      action_=arg[ka+1];
  • trunk/AddOn/TAcq/brproc.cc

    r3689 r3692  
    3434                                               uint_4 freq1, uint_4 freq2, uint_4 nbfreq)
    3535  : 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  
     36    // , dtfos_(outpath+"visdt.fits", Fits_Create), visdt_(dtfos_, 1024, true);
     37
     38
    4339  BRPaquet paq(memgr_.PaqSize());
    4440
    45   for(size_t i=0; i<2*memgr_.NbFibres(); i++)
    46     for(size_t j=i; j<2*memgr_.NbFibres(); j++)
    47       vvis_.push_back( TVector< complex<r_4> >(paq.DataSize()/4) );
    48 
    49   cout << " BRVisibilityCalculator/Info NMean= " << nmean_ << endl;
    50   totnbpaq_ = 0;
     41  vismtx_.SetSize((2*memgr_.NbFibres()+1)*memgr_.NbFibres(), paq.DataSize()/4);
     42  chanum_.SetSize(vismtx_.NRows());
     43  sa_size_t k=0;
     44  for(size_t i=0; i<2*memgr_.NbFibres(); i++) {
     45    for(size_t j=i; j<2*memgr_.NbFibres(); j++) {
     46      chanum_(k) = (i+1)*100+(j+1);  k++;
     47    }
     48  }
     49  //  visdt_.AddFloatColumn("mfc");
     50  visdt_.AddFloatColumn("mfc");
     51  visdt_.AddFloatColumn("mtt");
     52  visdt_.AddIntegerColumn("jfreq");
     53  visdt_.AddIntegerColumn("numch");
     54  visdt_.AddFloatColumn("vre");
     55  visdt_.AddFloatColumn("vim");
     56
     57  /*
     58  char colnm[32];
     59  for(size_t i=0; i<2*memgr_.NbFibres(); i++) {
     60    for(size_t j=i; j<2*memgr_.NbFibres(); j++) {
     61      sprintf(colnm,"vr_%d_%d",(int)(i+1),(int)j+1);
     62      visdt_.AddFloatColumn(colnm);
     63      sprintf(colnm,"vi_%d_%d",(int)(i+1),(int)j+1);
     64      visdt_.AddFloatColumn(colnm);
     65    }
     66  }
     67  */
     68  if (nmean_ < 1)  nmean_=memgr_.NbPaquets();
     69  if (nmean_ < 1)  nmean_=1;
     70
     71  totnbpaq_=0;
     72  numfile_=0;
     73  moyfc_=moytt_=0.;
     74
     75  jf1_=numfreq1_; jf2_=numfreq2_;
     76  if ((jf1_<1)||(jf1_>=vismtx_.NCols()))  jf1_=1;
     77  if ((jf2_<1)||(jf2_>=vismtx_.NCols())||(jf2_<jf1_))  jf2_=vismtx_.NCols()-1;
     78  if (nbinfreq_<1) nbinfreq_=1;
     79  djf_=(jf2_-jf1_)/nbinfreq_;
     80  if (djf_<1) djf_=0;
     81  xnt_ = new double[vismtx_.NRows()];
     82  for(int kk=0; kk<vismtx_.NRows(); kk++)  xnt_[kk]=0.;
     83
     84  cout << " BRVisibilityCalculator/Info NMean= " << nmean_ << " JF1=" << jf1_
     85       << " JF2=" << jf2_ << " DJF=" << djf_ << endl;
    5186}
    5287
     
    5489BRVisibilityCalculator::~BRVisibilityCalculator()
    5590{
     91  cout << " BRVisibilityCalculator - Visibility Datatable : " << endl;
     92  cout << visdt_;
     93  POutPersist po(outpath_+"visdt.ppf");
     94  po << visdt_;
     95  delete[] xnt_;
    5696}
    5797
     
    5999int BRVisibilityCalculator::Process()
    60100{
    61   /*
    62   if (totnbpaq_%nmean_ == 0) {
    63     cout << " BRVisibilityCalculator::Process() " << totnbpaq_ << " FrameCnt=" ;
    64     for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)   
    65       cout << curfc_[fib] << "," ;
    66     cout << endl;
    67     cout << " TimeTag (sec) : " ;
    68     for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)   
    69       cout << vpaq_[fib].TimeTag()/125000000 << "," ;
    70     cout << endl;
    71   }
    72   */
    73101  vector<TwoByteComplex*> vpdata;
    74   vector< TVector< complex<r_4> > > vvis;
    75 
    76102  /*
    77103  for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) {
     
    86112    vpdata.push_back(vpaq_[fib].Data2C());
    87113
    88   if (totnbpaq_%nmean_ == 0)
    89     for(size_t k=0; k<vvis_.size(); k++)   vvis_[k] = complex<r_4>((r_4)0.,(r_4)0.);
    90    
    91   for(size_t i=0; i<vvis_.size(); i++) {
    92     for(sa_size_t f=1; f<vvis_[i].Size(); f++) {
    93       vvis_[i](f) += complex<r_4>((r_4)vpdata[0][f].realB(), (r_4)(r_4)vpdata[0][f].imagB());
     114  if (totnbpaq_%nmean_ == 0) {
     115    if (totnbpaq_ > 0) {
     116      // ATTENTION : Matrice visibilites non moyennee
     117      char nfile[32];
     118      sprintf(nfile,"vismtx%d.ppf",numfile_);
     119      string flnm=outpath_+nfile;
     120      POutPersist po(flnm);
     121      po << vismtx_;
     122      cout << numfile_ << "-BRVisibilityCalculator::Process() NPaqProc="
     123           << totnbpaq_ << "  -> Visibility Matrix in " << flnm << endl;
     124      moyfc_/=nmean_;
     125      moytt_/=nmean_;
     126      FillVisibTable(moyfc_, moytt_);
     127      numfile_++;
    94128    }
    95   }
    96 
     129    vismtx_ = complex<r_4>((r_4)0.,(r_4)0.);
     130    moyfc_=moytt_=0.;
     131  }
     132 
     133  sa_size_t k=0;
     134  for(size_t i=0; i<vpdata.size(); i++) {
     135    for(size_t j=i; j<vpdata.size(); j++) {
     136      TVector< complex<r_4> > vis = vismtx_.Row(k);   k++;
     137      for(sa_size_t f=1; f<vis.Size(); f++) {
     138        vis(f) += complex<r_4>((r_4)vpdata[i][f].realB(), (r_4)vpdata[i][f].imagB()) *
     139          complex<r_4>((r_4)vpdata[j][f].realB(), -(r_4)vpdata[j][f].imagB());
     140      }
     141    }
     142  }
     143
     144  moyfc_ += curfc_[0];
     145  moytt_ += vpaq_[0].TimeTag();
    97146  totnbpaq_++;
     147  return 0;
     148}
     149
     150/* --Methode-- */
     151int BRVisibilityCalculator::FillVisibTable(double fcm, double ttm)
     152{
     153  xnt_[0]=fcm;  xnt_[1]=ttm/1.25e8;
     154
     155  if (djf_<2) {
     156    for(sa_size_t rv=0; rv<vismtx_.NRows(); rv++) {
     157      for(sa_size_t jf=jf1_; jf<jf2_; jf++) {
     158        xnt_[2]=jf;
     159        xnt_[3]=chanum_(rv);
     160        xnt_[4]=vismtx_(rv,jf).real()/(r_4)(nmean_);
     161        xnt_[5]=vismtx_(rv,jf).imag()/(r_4)(nmean_);
     162        visdt_.AddRow(xnt_);
     163      }
     164    }
     165  }
     166  else {
     167    for(sa_size_t rv=0; rv<vismtx_.NRows(); rv++) {
     168      for(sa_size_t jf=jf1_; jf<jf2_; jf+=djf_) {
     169        r_4 moyreal=0.;
     170        r_4 moyimag=0.;
     171        for(sa_size_t jjf=jf; jjf<jf+djf_; jjf++) {
     172          moyreal+=vismtx_(rv,jf).real();
     173          moyimag+=vismtx_(rv,jf).imag();
     174        }
     175        xnt_[2]=jf+djf_/2;
     176        xnt_[3]=chanum_(rv);
     177        xnt_[4]=moyreal/(r_4)(nmean_*djf_);
     178        xnt_[5]=moyimag/(r_4)(nmean_*djf_);
     179        visdt_.AddRow(xnt_);
     180      }
     181    }
     182  }
    98183  return 0;
    99184}
  • trunk/AddOn/TAcq/brproc.h

    r3690 r3692  
    3232
    3333  virtual int Process();
     34  virtual int FillVisibTable(double fcm, double ttm);
     35
    3436protected:
    3537  uint_4 nmean_;  // Nombre de spectres pour le calcul des moyennes
    3638  string outpath_;  // directory pour fichiers de sortie
    3739  uint_4 numfreq1_,numfreq2_,nbinfreq_;
    38   vector<uint_8> vframecount_;
    39   vector<uint_8> vtimetag_;
    40   vector<uint_8> vnpaqm_;
    41  
    42   vector< TVector< complex<r_4> > > vvis_;
     40  uint_4 jf1_,jf2_,djf_;
     41  uint_4 numfile_;
     42
     43  double moyfc_, moytt_;
     44  TMatrix< complex<r_4> > vismtx_;
     45  TVector< uint_4 > chanum_;
     46  //  FitsInOutFile dtfos_;
     47  DataTable visdt_;
    4348
    4449  uint_4 totnbpaq_;
     50  double* xnt_;
    4551};
    4652
  • trunk/AddOn/TAcq/tstminifits.cc

    r3658 r3692  
    9393    }
    9494    mff.setDTypeNaxis(MF_Byte, sx, sy);
     95    mff.AddKeyI("CleI_A", 12);
     96    mff.AddKeyD("CleD_B", 3.1415, " Valeur de Pi");
    9597    delete [] data;
    9698    cout << "5/ FIN ecriture tableau ds tmfb.fits " << endl;   
     
    106108    uint_1* data = new uint_1[sx*sy];
    107109    mff.ReadB(data, sx*sy);
     110    cout << " ---- mff.GetKey(CleD_B) : "  << mff.GetKey("CleD_B") << endl;
     111    cout << " ---- mff.GetKey(Non-Existing) : "  << mff.GetKey("NonExisting") << endl;
    108112    cout << "7/ FIN lecture depuis tmfb.fits " << endl;   
    109113    TArray<int_2> ta(sx, sy);
Note: See TracChangeset for help on using the changeset viewer.