Changeset 3683 in Sophya for trunk/AddOn/TAcq/brproc.cc


Ignore:
Timestamp:
Nov 27, 2009, 11:32:46 AM (16 years ago)
Author:
ansari
Message:

Mise a jour et ajout de fichier pour taritement multifibres apres

prise de donnees de Nov2009 a Pittsburgh

  • Introduction des classes BRMultiFitsReader et BRBaseProcessor Reza, 27/11/2009
File:
1 edited

Legend:

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

    r3658 r3683  
    2626#include "brproc.h"
    2727
     28//---------------------------------------------------------------------
     29// Classe de traitement - calcul de visibilite pour n fibres
     30//---------------------------------------------------------------------
     31
     32/* --Methode-- */
     33BRVisibilityCalculator::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-- */
     45BRVisibilityCalculator::~BRVisibilityCalculator()
     46{
     47}
     48
     49/* --Methode-- */
     50int BRVisibilityCalculator::Process()
     51{
     52}
    2853
    2954//---------------------------------------------------------------
     
    3560
    3661/* --Methode-- */
    37 BRProcARaw2C::BRProcARaw2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean,
     62BRProcA2C::BRProcA2C(RAcqMemZoneMgr& mem, string& path, bool fgraw, uint_4 nmean,
    3863                           uint_4 nmax, bool fghist, uint_4 nfsmap, bool fgnotrl, int card)
    3964  :  memgr(mem)
    4065{
     66  fgraw_ = fgraw;
    4167  nmax_ = nmax;
    4268  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;
    4371  nfsmap_ = nfsmap;
    4472  stop_ = false;       
     
    5179
    5280/* --Methode-- */
    53 void BRProcARaw2C::Stop()
     81void BRProcA2C::Stop()
    5482{
    5583 stop_=true;
    56  // cout <<" BRProcARaw2C::Stop ... > STOP " << endl;
     84 // cout <<" BRProcA2C::Stop ... > STOP " << endl;
    5785}
    5886
     
    6795}
    6896/* --Methode-- */
    69 void BRProcARaw2C::run()
     97void BRProcA2C::run()
    7098{
    7199  setRC(1);     
    72100  try {
    73     Timer tm("BRProcARaw2C", false);
     101    Timer tm("BRProcA2C", false);
    74102    TimeStamp ts;
    75103    BRPaqChecker pcheck(!fgnotrl_);  // Verification/comptage des paquets
     
    78106    size_t totnbytesproc = 0;
    79107
    80     cout << " BRProcARaw2C::run() - Starting " << ts << " NMaxMemZones=" << nmax_
     108    cout << " BRProcA2C::run() - Starting " << ts << " NMaxMemZones=" << nmax_
    81109         << " NMean=" << nmean_ << card2name_(card_) << endl;   
    82     cout << " BRProcARaw2C::run()... - Output Data Path: " << path_ << endl;
     110    cout << " BRProcA2C::run()... - Output Data Path: " << path_ << endl;
    83111    char fname[512];
    84112//    sprintf(fname,"%s/proc.log",path_.c_str());
    85113//    ofstream filog(fname);
    86 //    filog << " BRProcARaw2C::run() - starting log file " << ts << endl;                     
     114//    filog << " BRProcA2C::run() - starting log file " << ts << endl;                 
    87115//    filog << " ... NMaxMemZones=" << nmax_ << " NMean=" << nmean_ << " Step=" << step_ << endl;       
    88116
     
    94122    double ms1,ms2,ms12,ms12re,ms12im,ms12phi;
    95123----*/
    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
    99138// Initialisation pour calcul FFT
    100139    TVector< complex<r_4> > cfour1;  // composant TF
     
    132171      timfreqV2.SetSize(nmean_, spectreV2.Size()/nfsmap_);
    133172    }
    134     cout << " *DBG*BRProcARaw2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz
     173    cout << " *DBG*BRProcA2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz
    135174         << " procpaqsz/2=" << procpaqsz/2 << " cfour1.Size()=" << cfour1.Size()
    136175         << " *8="  << cfour1.Size()*8 << endl;
     
    160199      Byte* buff = memgr.GetMemZone(mid);
    161200      if (buff == NULL) {
    162          cout << " BRProcARaw2C::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl;
     201         cout << " BRProcA2C::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl;
    163202             break;             
    164203      }
    165204      Byte* procbuff = memgr.GetProcMemZone(mid);
    166205      if (procbuff == NULL) {
    167             cout << " BRProcARaw2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl;
     206            cout << " BRProcA2C::run()/ERROR memgr.GetProcMemZone(" << mid << ") -> NULL" << endl;
    168207        break; 
    169208      }
     
    178217        if (fghist_) {
    179218          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);
    182221            moysig[0] += (double)vts;
    183222            sigsig[0] += ((double)vts)*((double)vts);
    184223            nbsig[0]++;
    185             vx(j) = vts-127.5;
    186224          }
    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);
    210228            moysig[1] += (double)vts;
    211229            sigsig[1] += ((double)vts)*((double)vts);
    212230            nbsig[1]++;
    213             vx(j) = vts-127.5;
    214231          }
    215232        }
    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        }
    221262        for(sa_size_t j=0; j<spectreV2.Size(); j++)
    222263          spectreV2(j) += Zmod2(cfour2(j));  // Zmod2(zp2[j]);
     
    314355        po << PPFNameTag(tag12) << visiV12;
    315356        if (fghist_) {
    316           po << PPFNameTag(tagh1) << h1;
    317           po << PPFNameTag(tagh2) << h2;
     357          po << PPFNameTag(tagh1) << (*ph1);
     358          po << PPFNameTag(tagh2) << (*ph2);
    318359
    319360          double sspvmax[3] = {0.,0.,0.};
     
    354395        visiV12 = complex<r_4>(0., 0.);
    355396        if (fghist_) {
    356           h1.Zero();
    357           h2.Zero();
     397          ph1->Zero();
     398          ph2->Zero();
    358399          moysig[0]=moysig[1]=0.;
    359400          sigsig[0]=sigsig[1]=0.;
     
    367408//        ts.SetNow();
    368409//        filog << ts << " :  proc file  " << fname << endl;                   
    369         cout << " BRProcARaw2C::run() created file  " << fname << card2name_(card_) << endl;
     410        cout << " BRProcA2C::run() created file  " << fname << card2name_(card_) << endl;
    370411      }   
    371412     
    372413      memgr.FreeMemZone(mid, MemZS_ProcA);
    373414    }  // Fin de boucle sur les zones a traiter
    374   cout << " ------------  BRProcARaw2C::run() END " << card2name_(card_)
     415  cout << " ------------  BRProcA2C::run() END " << card2name_(card_)
    375416       << " ------------ " << endl;
    376417/*---- DELETE
     
    381422  POutPersist po(fname);
    382423  po << PPFNameTag("ntv12") << nt;
    383   cout << " BRProcARaw2C::run() created NTuple file " << fname << card2name_(card_) << endl;
     424  cout << " BRProcA2C::run() created NTuple file " << fname << card2name_(card_) << endl;
    384425  }
    385426---- */
     
    405446    po << PPFNameTag("rsbV1") << rsbV1;
    406447    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  }
    410455  ts.SetNow();
    411456  tm.SplitQ();
     
    414459       << " ProcDataOut=" <<  totnbytesout/(1024*1024) << " MB" << endl;   
    415460  cout << pcheck;
    416   cout << " BRProcARaw2C::run()/Timing: " << card2name_(card_) << endl;
     461  cout << " BRProcA2C::run()/Timing: " << card2name_(card_) << endl;
    417462  tm.Print();
    418463  cout << " ---------------------------------------------------------- " << endl;
     
    420465  }
    421466  catch (PException& exc) {
    422     cout << " BRProcARaw2C::run()/catched PException " << exc.Msg() << endl;
     467    cout << " BRProcA2C::run()/catched PException " << exc.Msg() << endl;
    423468    setRC(3);   
    424469    return;
    425470  }
    426471  catch(...) {
    427     cout << " BRProcARaw2C::run()/catched unknown ... exception " << endl;
     472    cout << " BRProcA2C::run()/catched unknown ... exception " << endl;
    428473    setRC(4);   
    429474    return;
     
    434479
    435480//---------------------------------------------------------------------
    436 // Classe thread de traitement 2 x 2 voies/frames (Apres BRProcARaw2C)
     481// Classe thread de traitement 2 x 2 voies/frames (Apres BRProcA2C)
    437482//---------------------------------------------------------------------
    438483
    439484/* --Methode-- */
    440 BRProcBRaw4C::BRProcBRaw4C(RAcqMemZoneMgr& mem1, RAcqMemZoneMgr& mem2,
    441                            string& path, uint_4 nmean, uint_4 nmax, bool fgnotrl)
     485BRProcB4C::BRProcB4C(RAcqMemZoneMgr& mem1, RAcqMemZoneMgr& mem2, string& path,
     486                     bool fgraw, uint_4 nmean, uint_4 nmax, bool fgnotrl)
    442487  :  memgr1(mem1), memgr2(mem2)
    443488{
     489  fgraw_ = fgraw;
    444490  nmax_ = nmax;
    445491  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;
    446494  stop_ = false;       
    447495  path_ = path;
     
    450498
    451499/* --Methode-- */
    452 void BRProcBRaw4C::Stop()
     500void BRProcB4C::Stop()
    453501{
    454502 stop_=true;
    455  // cout <<" BRProcBRaw4C::Stop ... > STOP " << endl;
    456 }
    457 
    458 
    459 /* --Methode-- */
    460 void BRProcBRaw4C::run()
     503 // cout <<" BRProcB4C::Stop ... > STOP " << endl;
     504}
     505
     506
     507/* --Methode-- */
     508void BRProcB4C::run()
    461509{
    462510  setRC(1);     
    463511  try {
    464     Timer tm("BRProcBRaw4C", false);
     512    Timer tm("BRProcB4C", false);
    465513    TimeStamp ts;
    466514    BRPaqChecker pcheck1(!fgnotrl_);  // Verification/comptage des paquets
     
    470518    size_t totnbytesproc = 0;
    471519
    472     cout << " BRProcBRaw4C::run() - Starting " << ts << " NMaxMemZones=" << nmax_
     520    cout << " BRProcB4C::run() - Starting " << ts << " NMaxMemZones=" << nmax_
    473521         << " NMean=" << nmean_ << endl;       
    474     cout << " BRProcBRaw4C::run()... - Output Data Path: " << path_ << endl;
     522    cout << " BRProcB4C::run()... - Output Data Path: " << path_ << endl;
    475523
    476524    uint_4 paqsz = memgr1.PaqSize();
    477525    uint_4 procpaqsz = memgr1.ProcPaqSize();
    478526    if ((paqsz != memgr2.PaqSize())||(procpaqsz!= memgr2.ProcPaqSize())) {
    479       cout << "BRProcBRaw4C::run()/ERROR : different paquet size -> stop \n ...(PaqSz1="
     527      cout << "BRProcB4C::run()/ERROR : different paquet size -> stop \n ...(PaqSz1="
    480528           << paqsz << " Sz2=" << memgr2.PaqSize() << " ProcPaqSz1="
    481529           << procpaqsz << " Sz2=" << memgr2.ProcPaqSize() << " )" << endl;
     
    504552    TVector< complex<r_4> > visiV24( szfour );
    505553    // cout << " *DBG*AAAAA ---- Vectors OK" << endl;
    506     cout << " *DBG*BRProcBRaw4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz
     554    cout << " *DBG*BRProcB4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz
    507555         << " procpaqsz/2=" << procpaqsz/2 << " cfour.Size()=" << szfour
    508556         << " *8="  << szfour*8 << endl;
     
    537585      Byte* buff1 = memgr1.GetMemZone(mid1);
    538586      if (buff1 == NULL) {
    539          cout << " BRProcBRaw4C::run()/ERROR memgr.GetMemZone(" << mid1 << ") -> NULL" << endl;
     587         cout << " BRProcB4C::run()/ERROR memgr.GetMemZone(" << mid1 << ") -> NULL" << endl;
    540588             break;             
    541589      }
    542590      Byte* procbuff1 = memgr1.GetProcMemZone(mid1);
    543591      if (procbuff1 == NULL) {
    544             cout << " BRProcBRaw4C::run()/ERROR memgr.GetProcMemZone(" << mid1 << ") -> NULL" << endl;
     592            cout << " BRProcB4C::run()/ERROR memgr.GetProcMemZone(" << mid1 << ") -> NULL" << endl;
    545593        break; 
    546594      }
     
    548596      Byte* buff2 = memgr2.GetMemZone(mid2);
    549597      if (buff1 == NULL) {
    550          cout << " BRProcBRaw4C::run()/ERROR memgr.GetMemZone(" << mid2 << ") -> NULL" << endl;
     598         cout << " BRProcB4C::run()/ERROR memgr.GetMemZone(" << mid2 << ") -> NULL" << endl;
    551599             break;             
    552600      }
    553601      Byte* procbuff2 = memgr2.GetProcMemZone(mid2);
    554602      if (procbuff2 == NULL) {
    555             cout << " BRProcBRaw4C::run()/ERROR memgr.GetProcMemZone(" << mid2 << ") -> NULL" << endl;
     603            cout << " BRProcB4C::run()/ERROR memgr.GetProcMemZone(" << mid2 << ") -> NULL" << endl;
    556604        break; 
    557605      }
     
    584632        if (fgfirst) {
    585633          firsttt=paq1.TimeTag();  firsttt2=paq2.TimeTag();
    586           cout << " BRProcBRaw4C()/Info First FC="<<curfc<<" , "<<curfc2<<" -> TT="
     634          cout << " BRProcB4C()/Info First FC="<<curfc<<" , "<<curfc2<<" -> TT="
    587635               << firsttt<<" , "<<firsttt2 <<endl;
    588636          fgfirst=false;
     
    653701//        ts.SetNow();
    654702//        filog << ts << " :  proc file  " << fname << endl;                   
    655         cout << " BRProcBRaw4C::run() created file  " << fname << endl;
     703        cout << " BRProcB4C::run() created file  " << fname << endl;
    656704      }   
    657705      double okfrac = (nokpaq>1)?((double)noksfc/(double)nokpaq*100.):0.;
    658       cout << "BRProcBRaw4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc
     706      cout << "BRProcB4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc
    659707           << " (" << okfrac << " %)" << endl;
    660708      totnokpaq += nokpaq;
    661709      totnoksfc += noksfc;
    662710    }  // Fin de boucle sur les zones a traiter
    663     cout << " ------------------  BRProcBRaw4C::run() END ----------------- " << endl;
     711    cout << " ------------------  BRProcB4C::run() END ----------------- " << endl;
    664712    {     
    665713    dt.Info()["FirstTT1"]=firsttt;     
     
    670718    POutPersist po(fname);
    671719    po << PPFNameTag("ttfc") << dt;
    672     cout << " BRProcBRaw4C::run() created TimeTag/FrameCounter file " << fname  << endl;
     720    cout << " BRProcB4C::run() created TimeTag/FrameCounter file " << fname  << endl;
    673721    }     
    674722    ts.SetNow();
     
    681729//  cout << pcheck1;
    682730//  cout << pcheck2;
    683     cout << " BRProcBRaw4C::run()/Timing: \n";
     731    cout << " BRProcB4C::run()/Timing: \n";
    684732    tm.Print();
    685733    cout << " ---------------------------------------------------------- " << endl;
    686734}
    687735  catch (PException& exc) {
    688     cout << " BRProcBRaw4C::run()/catched PException " << exc.Msg() << endl;
     736    cout << " BRProcB4C::run()/catched PException " << exc.Msg() << endl;
    689737    setRC(3);   
    690738    return;
    691739  }
    692740  catch(...) {
    693     cout << " BRProcBRaw4C::run()/catched unknown ... exception " << endl;
     741    cout << " BRProcB4C::run()/catched unknown ... exception " << endl;
    694742    setRC(4);   
    695743    return;
Note: See TracChangeset for help on using the changeset viewer.