Changeset 3979 in Sophya for trunk/AddOn/TAcq/brbaseproc.cc


Ignore:
Timestamp:
May 4, 2011, 9:18:09 AM (14 years ago)
Author:
ansari
Message:

Ajout definition de fenetre en temps de traitement (appel a Process()) ds BRBaseProcessor et BRAnaParam, FileSequenceNumber (numero signalXXX.fits) pour chaque zone memoire dans RAcqMZAuxData / RAcqMemZoneMgr, Reza 04/05/2011

File:
1 edited

Legend:

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

    r3955 r3979  
    9696    cout << "BRBaseProcessor[" << bpnom_ << "," << bpid_ << "]::run() - Starting " << " NFibers="
    9797         << memgr_.NbFibres() << endl; 
     98    if (fgproctimewin_) cout << " BRBaseProcessor...TimeWindow Start=" << tmstart_ << " End=" << tmend_ << endl;
    9899
    99100    size_t paqsz=memgr_.PaqSize();
    100101    size_t procpaqsz=memgr_.ProcPaqSize();
     102
     103    double tstartdays = tmstart_.ToDays();
     104    double tenddays = tmend_.ToDays();
     105
    101106    bool fgrun=true;
    102107    while (fgrun) {
    103108      if (stop_) break;
    104109      if (memgr_.GetRunState() == MemZR_Stopped) break;
    105       int mid = memgr_.FindMemZoneId(mmact_);  // (MemZA_ProcA);
    106       //      Byte* buffg = memgr_.GetMemZone(mid);
     110      mid_ = memgr_.FindMemZoneId(mmact_);  // (MemZA_ProcA);
     111      //      Byte* buffg = memgr_.GetMemZone(mid_);
    107112      //      if (buffg == NULL) {
    108       if (mid < 0) {
     113      if (mid_ < 0) {
    109114        cout << "BRBaseProcessor[" << bpnom_ << "," << bpid_ << "]::run()/ERROR FindMemZoneId("
    110              << (int)mmact_ << ") ->" << mid << ") -> NULL" << endl;
     115             << (int)mmact_ << ") ->" << mid_ << ") -> NULL" << endl;
    111116        setRC(7);      fgrun=false;             
    112117        break; 
    113118      }
    114       cts_=memgr_.GetAuxData(mid)->FillTime();   // get associated date/time (DATEOBS)
     119      cts_=memgr_.GetAuxData(mid_)->FillTime();   // get associated date/time (DATEOBS)
    115120      for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) {
    116         fbuff_[fib] = memgr_.GetMemZone(mid,fib);
     121        fbuff_[fib] = memgr_.GetMemZone(mid_,fib);
    117122        if (fbuff_[fib] == NULL) { // cela ne devrait pas arriver
    118123          cout << "BRBaseProcessor[" << bpnom_ << "," << bpid_ << "]::run()/ERROR memgr.GetMemZone("
    119                << mid << "," << fib << ") -> NULL" << endl;
     124               << mid_ << "," << fib << ") -> NULL" << endl;
    120125          setRC(9);       fgrun=false;         
    121126          break;
    122127        }
    123         if ((procpaqsz>0)&&((fprocbuff_[fib]=memgr_.GetProcMemZone(mid,fib))==NULL)) {   // cela ne devrait pas arriver non plus
     128        if ((procpaqsz>0)&&((fprocbuff_[fib]=memgr_.GetProcMemZone(mid_,fib))==NULL)) {   // cela ne devrait pas arriver non plus
    124129          cout << "BRBaseProcessor[" << bpnom_ << "," << bpid_ << "]::run()/ERROR memgr.GetProcMemZone("
    125                << mid << "," << fib << ") -> NULL" << endl;
     130               << mid_ << "," << fib << ") -> NULL" << endl;
    126131          setRC(9);       fgrun=false;         
    127132          break;
    128133        }
    129134      }
    130       for(size_t jp=0; jp<memgr_.NbPaquets(); jp++) {   // boucle sur les paquets d'une zone 
    131         fgokallfibers_=true;
    132         for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) {
    133           vpaq_[fib].Set(fbuff_[fib]+jp*paqsz);
    134           vfgok_[fib]=vpchk_[fib].Check(vpaq_[fib],curfc_[fib]);
    135           if (!vfgok_[fib])  fgokallfibers_=false;
    136           if (procpaqsz>0)    vprocpaq_[fib] = fprocbuff_[fib]+jp*procpaqsz;
    137         }
    138         //--- Traitement
    139         int rcp=0;
    140         if (fgokallfibers_)  {
    141           if (totprocnpaq_==0) {
    142             for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)  {
    143               fcfirst_[fib]=curfc_[fib];
    144               ttfirst_[fib]=vpaq_[fib].TimeTag();
     135
     136      // On ne traite les paquets que si pas de fenetre en temps ou tmstart_ <= FillTime() <= tmend_
     137      double ftmdays = memgr_.GetAuxData(mid_)->FillTime().ToDays();
     138      if ((!fgproctimewin_) || ( (ftmdays<=tenddays)&&(ftmdays>=tstartdays) ) ) {
     139
     140        for(size_t jp=0; jp<memgr_.NbPaquets(); jp++) {   // boucle sur les paquets d'une zone 
     141          fgokallfibers_=true;
     142          for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) {
     143            vpaq_[fib].Set(fbuff_[fib]+jp*paqsz);
     144            vfgok_[fib]=vpchk_[fib].Check(vpaq_[fib],curfc_[fib]);
     145            if (!vfgok_[fib])  fgokallfibers_=false;
     146            if (procpaqsz>0)    vprocpaq_[fib] = fprocbuff_[fib]+jp*procpaqsz;
     147          }
     148          //--- Traitement
     149          int rcp=0;
     150          if (fgokallfibers_)  {
     151            if (totprocnpaq_==0) {
     152              for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)  {
     153                fcfirst_[fib]=curfc_[fib];
     154                ttfirst_[fib]=vpaq_[fib].TimeTag();
     155              }
    145156            }
     157            rcp=Process();
     158            totprocnpaq_++;
    146159          }
    147           rcp=Process();
    148           totprocnpaq_++;
    149         }
    150         //      if (rcp != 0)   { fgrun=false; break; }
    151       }  // Fin de boucle sur les paquets
    152       memgr_.FreeMemZone(mid, mmsta_);   // (MemZS_ProcA);
     160          //    if (rcp != 0)   { fgrun=false; break; }
     161        }  // Fin de boucle sur les paquets
     162      }  // Fin de test pour fenetre en temps de traitement des paquets
     163 
     164      memgr_.FreeMemZone(mid_, mmsta_);   // (MemZS_ProcA);
    153165    } // Fin de boucle sur les zones a traiter
    154166    //------------------------------------
     
    198210    for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)   
    199211      cout << getCurTimeTagSeconds(fib) << "," ;
     212    if (prtlev_<4) return 0;
     213    cout << " ... FileSequenceNumber[0..." << memgr_.NbFibres()-1 << "]=" ;
     214    for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)   
     215      cout << memgr_.GetAuxData(mid_)->FileSequenceNumber(fib) << ",";
    200216    cout << endl;
    201217  }
Note: See TracChangeset for help on using the changeset viewer.