Changeset 3888 in Sophya for trunk/AddOn


Ignore:
Timestamp:
Sep 24, 2010, 2:01:47 PM (15 years ago)
Author:
ansari
Message:

Introduction correction de gain/reponse filtre et amelioration n-tuple ds BRMeanSpecCalculator, Reza+JEC 24/09/2010

Location:
trunk/AddOn/TAcq
Files:
5 edited

Legend:

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

    r3886 r3888  
    3333
    3434  vmin_=0.;  vmax_=9e99;
     35  gainfile_="";
    3536}
    3637
     
    9192    else if (strcmp(arg[ka],"-varcut")==0) {
    9293      sscanf(arg[ka+1],"%lg,%lg",&vmin_,&vmax_);
     94      ka+=2;
     95    }
     96    else if (strcmp(arg[ka],"-gain")==0) {
     97      gainfile_=arg[ka+1];
    9398      ka+=2;
    9499    }
     
    132137  cout << " Usage:  prgname [-act ACT] [-out OutPath] [-nmean NMean] [-zones NZones,nPaqinZone] \n"
    133138       << "                 [-nbloc NBloc] [-freq NumFreqMin,NumFreqMax,NBinFreq] \n"
    134        << "                 [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] [-varcut min,max] \n"
     139       << "                 [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] \n"
     140       << "                 [-gain filename] [-varcut min,max] \n"
    135141       << "         -in Imin,Imax,Istep InPath FiberList [InPath2 FiberList2 InPath3 FiberList3 ...] \n" << endl;
    136142  if (fgshort) {
     
    152158       << " -nosfc : Don't force reading with SAME FrameCounter \n"
    153159       << " -varcut min,max : min-max cut on variance \n"
     160       << " -gain filename : spectral response fits file name \n"
    154161       << " -in : input files/directory definition : \n"
    155162       << "       Imin,Imax,Istep: fits files signalII.fits Imin<=II<=Imax Istep=increment \n"
     
    179186  cout << " Action=" << action_ << "  NMean=" << nmean_ << " NBloc=" << nbloc_ << endl;
    180187  cout << " FreqMin= " << freqmin_ << " FreqMax= " << freqmax_ << " NBinFreq= " << nbinfreq_ << endl;
    181   cout << " VarianceMin= " << vmin_ << " VarianceMax= " << vmax_ << endl;
     188  cout << " GainFileName=" << gainfile_ << " VarianceMin= " << vmin_ << " VarianceMax= " << vmax_ << endl;
    182189  cout << " PaqSize=" << paqsize_ << "  -  NZones=" << nzones_ << " NPaqZone=" << npaqinzone_
    183190       << " PrtLevel=" << prtlevel_ << " PrtCntModulo=" <<  prtmodulo_ << endl;
  • trunk/AddOn/TAcq/branap.h

    r3886 r3888  
    4747
    4848  double vmin_,vmax_;   // coupure min-max sur la variance
     49  string gainfile_;     // nom du fichier de gain (reponse spectrale)
    4950};
    5051
  • trunk/AddOn/TAcq/brproc.cc

    r3886 r3888  
    4747    mspecmtx_.SetSize(memgr_.NbFibres(), paq.DataSize()/2);
    4848    sigspecmtx_.SetSize(memgr_.NbFibres(), paq.DataSize()/2);
     49    sgain_.SetSize(memgr_.NbFibres(), paq.DataSize()/2);
    4950  }
    5051  else {
    5152    mspecmtx_.SetSize(2*memgr_.NbFibres(), paq.DataSize()/4);
    5253    sigspecmtx_.SetSize(2*memgr_.NbFibres(), paq.DataSize()/4);
     54    sgain_.SetSize(2*memgr_.NbFibres(), paq.DataSize()/4);
    5355  }
    5456  mspecmtx_=(r_4)(0.);
    5557  sigspecmtx_=(r_4)(0.);
     58  sgain_=(r_4)(1.);    // Gain en fonction de la frequence, à 1 par defaut
     59
    5660  numfile_=0;
    5761  nbpaq4mean_=0;
     
    7175    dtp_->AddFloatColumn(cnom);   
    7276  }
    73   xnt_=new double[nchan];
     77  for(int i=0; i<nchan; i++) {
     78    sprintf(cnom,"varnorm%d",i);
     79    dtp_->AddFloatColumn(cnom);   
     80  }
     81  xnt_=new double[nchan*2];
    7482}
    7583
     
    9199}
    92100
     101/* --Methode-- */
     102void BRMeanSpecCalculator::ReadGainFitsFile(string filename)
     103{
     104  cout << " BRMeanSpecCalculator::ReadGainFitsFile() - reading file " << filename;
     105  FitsInOutFile fis(filename, FitsInOutFile::Fits_RO);
     106  fis >> sgain_;
     107  cout << " MeanGain=" << sgain_.Sum()/sgain_.Size() << endl;
     108}
    93109
    94110static inline r_4 Zmod2(complex<r_4> z)
     
    159175      }
    160176      double variance=0.;
    161       for(sa_size_t f=1; f<mspecmtx_.NCols(); f++)   variance+=(double)zp[f].module2F();
     177      double varnorm=0.;
     178      for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) {
     179        double modsq=(double)zp[f].module2F();
     180        variance+=modsq;
     181        varnorm+=modsq/sgain_(i,f);
     182      }
    162183      xnt_[i]=variance;
     184      xnt_[i+mspecmtx_.NRows()]=varnorm;
    163185      clnflg_[i]=0;
    164       if (variance<varmin_) clnflg_[i]=1;
    165       else if (variance>varmax_) clnflg_[i]=2;
     186      if (varnorm<varmin_) clnflg_[i]=1;
     187      else if (varnorm>varmax_) clnflg_[i]=2;
    166188    }
    167189  }
     
    177199      }
    178200      double variance=0.;
    179       for(sa_size_t f=1; f<mspecmtx_.NCols(); f++)   variance+=(double)Zmod2(zp[f]);
     201      double varnorm=0.;
     202      for(sa_size_t f=1; f<mspecmtx_.NCols(); f++) {
     203        double modsq=(double)Zmod2(zp[f]);
     204        variance+=modsq;
     205        varnorm+=modsq/sgain_(i,f);
     206      }
    180207      xnt_[i]=variance;
     208      xnt_[i+mspecmtx_.NRows()]=varnorm;
    181209      clnflg_[i]=0;
    182       if (variance<varmin_) clnflg_[i]=1;
    183       else if (variance>varmax_) clnflg_[i]=2;     
     210      if (varnorm<varmin_) clnflg_[i]=1;
     211      else if (varnorm>varmax_) clnflg_[i]=2;
    184212    }
    185213  }
  • trunk/AddOn/TAcq/brproc.h

    r3886 r3888  
    4343     { varmin_=vmin;  varmax_=vmax; }
    4444
     45  void ReadGainFitsFile(string filename);
     46
    4547protected:
    4648  virtual int Process();
     
    5961  TMatrix< r_4 > mspecmtx_;    // Matrice des spectres moyennees
    6062  TMatrix< r_4 > sigspecmtx_;    // Matrice des sigmas des spectres 
     63
     64  TMatrix< r_4 > sgain_;   // gain en fonction de la frequence 
    6165
    6266  vector<int> clnflg_;      // resultat de la routine "cleaner"
  • trunk/AddOn/TAcq/specmfib.cc

    r3886 r3888  
    7373    BRMeanSpecCalculator procms(mmgr, par.outpath_, par.nmean_, par.fgdatafft_, par.fgsinglechannel_);
    7474    procms.SetVarianceLimits(par.vmin_, par.vmax_);
     75    if (par.gainfile_.length()>0) procms.ReadGainFitsFile(par.gainfile_);
     76
    7577    BRFFTCalculator procfft(mmgr, par.fgsinglechannel_);
    7678    if (!par.fgdatafft_) procms.SetMemZAction(MemZA_ProcB);
Note: See TracChangeset for help on using the changeset viewer.