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


Ignore:
Timestamp:
Feb 7, 2011, 9:26:23 AM (15 years ago)
Author:
campagne
Message:

secure the code from non initialisation in certain options (JEC)

File:
1 edited

Legend:

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

    r3944 r3946  
    9494 
    9595  //  cout << "(JEC) creation tuple de " << nchan*(1+numberOfBands_) << " doubles " << endl;
    96   // CHECK : ATTENTION , on alloue une taille minimum pour le tableau xnt, reallocation si DefineDataTable() appele
    97   xnt_=new double[nchan*2];
     96  //  xnt_=new double[nchan*(1+numberOfBands_)];  // CHECK : ATTENTION la taille depend de nombre de colonne du NTuple !
     97  xnt_=NULL;
    9898}
    9999
     
    168168  //  xnt_=new double[nchan*2];  CHECK : faut-il reallouer ?
    169169  cout << "(JEC) creation tuple de " << nchan*(1+numberOfBands_) << " doubles " << endl;
    170   if (xnt_) delete[] xnt_;
    171170  xnt_=new double[nchan*(1+numberOfBands_)];
    172171  cout << "(JEC) BRMeanSpecCalculator::DefineDataTable END" << endl;
     
    320319    // Boucle sur les numeros de voie (canaux)
    321320    for(sa_size_t i=0; i<spec_window_.SizeY(); i++)  {
     321
     322      clnflg_(i,kz)=0;
     323
    322324      double mean, sigma;
    323325      ////////BUG      sa_size_t kz=PaqNumToArrayIndex(totnbpaq_);
    324326      double variance=0.;
    325327      variance=spec_window_(Range(1,Range::lastIndex()), Range(i), Range(kz)).Sum();
    326       xnt_[i]=variance;
    327       //Compute nomalized variance in bands freq.
    328       sa_size_t fMin;
    329       sa_size_t fMax;
    330       int bandW = spec_window_.SizeX()/numberOfBands_;
    331       vector<double> varNomBinned(numberOfBands_);
    332       for (sa_size_t j=0; j<numberOfBands_; j++){
    333         fMin = j*bandW;
    334         fMax =fMin+bandW-1;
    335         varNomBinned[j]=spec_window_(Range(fMin,fMax), Range(i), Range(kz)).Sum();
    336         varNomBinned[j]/=(r_4)bandW;
    337         xnt_[spec_window_.SizeY()+i*numberOfBands_+j] =  varNomBinned[j];
    338       }//eof
    339 
    340       clnflg_(i,kz)=0;
    341       for (sa_size_t j=ibandfirst_; j<=ibandlast_; j++){
    342         //        cout << "(jec) var["<<j<<"] =" << varNomBinned[j]
    343         //     << " min " << varmin_
    344         //     << " max " << varmax_ << endl;
    345         if(varNomBinned[j]<varmin_)      { clnflg_(i,kz)=10+j;  nbadpaq_[i]++; break;}
    346         else if(varNomBinned[j]>varmax_) { clnflg_(i,kz)=100+j; nbadpaq_[i]++; break;}
    347       }
    348       //cout << "clnflg_("<<i<<","<<kz<<"): " << clnflg_(i,kz)  << endl;
    349     }
    350     if (dtp_)  dtp_->AddRow(xnt_);
     328      if(xnt_)xnt_[i]=variance;
     329      if(numberOfBands_>0){
     330        //Compute nomalized variance in bands freq.
     331        sa_size_t fMin;
     332        sa_size_t fMax;
     333        int bandW = spec_window_.SizeX()/numberOfBands_;
     334        vector<double> varNomBinned(numberOfBands_);
     335        for (sa_size_t j=ibandfirst_; j<=ibandlast_; j++){
     336          fMin = j*bandW;
     337          fMax =fMin+bandW-1;
     338          varNomBinned[j]=spec_window_(Range(fMin,fMax), Range(i), Range(kz)).Sum();
     339          varNomBinned[j]/=(r_4)bandW;
     340          if(xnt_)xnt_[spec_window_.SizeY()+i*numberOfBands_+j] =  varNomBinned[j];
     341
     342          //        cout << "(jec) var["<<j<<"] =" << varNomBinned[j]
     343          //     << " min " << varmin_
     344          //     << " max " << varmax_ << endl;
     345          if(varNomBinned[j]<varmin_)      { clnflg_(i,kz)=10+j;  nbadpaq_[i]++; break;}
     346          else if(varNomBinned[j]>varmax_) { clnflg_(i,kz)=100+j; nbadpaq_[i]++; break;}
     347        }
     348        //cout << "clnflg_("<<i<<","<<kz<<"): " << clnflg_(i,kz)  << endl;
     349      }//if bands
     350    }//loop on channels
     351
     352    if (dtp_ && xnt_)  dtp_->AddRow(xnt_);
    351353  }
    352354  return;
Note: See TracChangeset for help on using the changeset viewer.