Changeset 3886 in Sophya


Ignore:
Timestamp:
Sep 24, 2010, 12:31:21 AM (15 years ago)
Author:
ansari
Message:

Codage remplissage n_tuple avec les variances, Reza 23/09/2010

Location:
trunk/AddOn/TAcq
Files:
5 edited

Legend:

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

    r3883 r3886  
    3131  nbcalgrp_=1;
    3232  nthreads_=1;
     33
     34  vmin_=0.;  vmax_=9e99;
    3335}
    3436
     
    8688      rdsamefc_=false;
    8789      ka++;
     90    }
     91    else if (strcmp(arg[ka],"-varcut")==0) {
     92      sscanf(arg[ka+1],"%lg,%lg",&vmin_,&vmax_);
     93      ka+=2;
    8894    }
    8995    else if (strcmp(arg[ka],"-in")==0) {
     
    126132  cout << " Usage:  prgname [-act ACT] [-out OutPath] [-nmean NMean] [-zones NZones,nPaqinZone] \n"
    127133       << "                 [-nbloc NBloc] [-freq NumFreqMin,NumFreqMax,NBinFreq] \n"
    128        << "                 [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] \n"
     134       << "                 [-prt lev,modulo] [-nvcal n] [-nthr n] [-nosfc] [-varcut min,max] \n"
    129135       << "         -in Imin,Imax,Istep InPath FiberList [InPath2 FiberList2 InPath3 FiberList3 ...] \n" << endl;
    130136  if (fgshort) {
     
    145151       << " -nthr n : number of threads for parallel execution in BRVisibilityCalculator (default=1) \n"
    146152       << " -nosfc : Don't force reading with SAME FrameCounter \n"
     153       << " -varcut min,max : min-max cut on variance \n"
    147154       << " -in : input files/directory definition : \n"
    148155       << "       Imin,Imax,Istep: fits files signalII.fits Imin<=II<=Imax Istep=increment \n"
     
    172179  cout << " Action=" << action_ << "  NMean=" << nmean_ << " NBloc=" << nbloc_ << endl;
    173180  cout << " FreqMin= " << freqmin_ << " FreqMax= " << freqmax_ << " NBinFreq= " << nbinfreq_ << endl;
     181  cout << " VarianceMin= " << vmin_ << " VarianceMax= " << vmax_ << endl;
    174182  cout << " PaqSize=" << paqsize_ << "  -  NZones=" << nzones_ << " NPaqZone=" << npaqinzone_
    175183       << " PrtLevel=" << prtlevel_ << " PrtCntModulo=" <<  prtmodulo_ << endl;
  • trunk/AddOn/TAcq/branap.h

    r3883 r3886  
    4545  uint_4 nbcalgrp_;    // Nb d'objets/threads dans BRVisCalcGroup
    4646  uint_4 nthreads_;  // Nb de threads pour l'execution parallele ds BRVisibilityCalculator
     47
     48  double vmin_,vmax_;   // coupure min-max sur la variance
    4749};
    4850
  • trunk/AddOn/TAcq/brproc.cc

    r3881 r3886  
    2020#include "ctimer.h"
    2121#include "fftpserver.h"
    22 #include "fftwserver.h"
     22#include "fitsarrhand.h"
    2323
    2424#include "FFTW/fftw3.h"
     
    3838                                           bool fgdatafft, bool fgsinglechan)
    3939  : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean),
    40     fgdatafft_(fgdatafft), fgsinglechannel_(fgsinglechan)
     40    fgdatafft_(fgdatafft), fgsinglechannel_(fgsinglechan),
     41    clnflg_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres()),
     42    nbadpaq_(fgsinglechan?memgr_.NbFibres():2*memgr_.NbFibres())
    4143{
    4244  setNameId("meanSpecCalc",1);
     
    5557  nbpaq4mean_=0;
    5658  totnbpaq_=0;
     59
     60  SetVarianceLimits();
     61
     62  ofsdtp_=NULL;
     63  dtp_=NULL;
     64  string dtfile="!"+outpath_+"/dtspec.fits";
     65  ofsdtp_ = new FitsInOutFile(dtfile,FitsInOutFile::Fits_Create);
     66  dtp_ = new SwFitsDataTable(*ofsdtp_,1024,true);
     67  int nchan=(fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres());
     68  char cnom[32];
     69  for(int i=0; i<nchan; i++) {
     70    sprintf(cnom,"var%d",i);
     71    dtp_->AddFloatColumn(cnom);   
     72  }
     73  xnt_=new double[nchan];
    5774}
    5875
     
    6178{
    6279  if (nbpaq4mean_>1)  SaveSpectra();
     80  cout << " ---------------- BRMeanSpecCalculator()_Finalizing -------------------- " << endl;
     81  for(size_t i=0; i<nbadpaq_.size(); i++) {
     82    cout << " Channel " << i << "  NBadPaq=" << nbadpaq_[i] << " / TotNbPaq=" << totnbpaq_ << endl;
     83  }
     84  if (dtp_) {
     85    cout << *dtp_;
     86    delete dtp_;
     87    delete ofsdtp_;
     88    delete xnt_;
     89  }
     90  cout << " ------------------------------------------------------------------------ " << endl;
    6391}
    6492
     
    7098int BRMeanSpecCalculator::Process()
    7199{
    72      
    73100  if (nbpaq4mean_==nmean_)  SaveSpectra();
     101  FlagBadPackets();
    74102   
    75103  if (fgdatafft_) {  // Donnees firmware FFT
    76104    for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) {
     105      if (clnflg_[i])  { nbadpaq_[i]++;  continue; }   // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 )
    77106      TwoByteComplex* zp=NULL;
    78107      if (fgsinglechannel_) {
     
    94123  else {  // Donnees RAW qui ont du etre processe par BRFFTCalculator
    95124    for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) {
     125      if (clnflg_[i])  { nbadpaq_[i]++;  continue; }   // si le paquet a ete flagge mauvais ( clnflg_[i] <> 0 )
    96126      complex<ODT>* zp=NULL;
    97127      if (fgsinglechannel_) {
     
    116146
    117147/* --Methode-- */
     148void BRMeanSpecCalculator::FlagBadPackets()
     149{
     150  if (fgdatafft_) {  // Donnees firmware FFT
     151    for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) {
     152      TwoByteComplex* zp=NULL;
     153      if (fgsinglechannel_) {
     154        zp=vpaq_[i].Data1C();
     155      }
     156      else {
     157        zp=vpaq_[i/2].Data1C();
     158        if (i%2==1)  zp=vpaq_[i/2].Data2C();
     159      }
     160      double variance=0.;
     161      for(sa_size_t f=1; f<mspecmtx_.NCols(); f++)   variance+=(double)zp[f].module2F();
     162      xnt_[i]=variance;
     163      clnflg_[i]=0;
     164      if (variance<varmin_) clnflg_[i]=1;
     165      else if (variance>varmax_) clnflg_[i]=2;
     166    }
     167  }
     168  else {  // Donnees RAW qui ont du etre processe par BRFFTCalculator
     169    for(sa_size_t i=0; i<(size_t)mspecmtx_.NRows(); i++) {
     170      complex<ODT>* zp=NULL;
     171      if (fgsinglechannel_) {
     172        zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i]);
     173      }
     174      else {
     175        zp=reinterpret_cast< complex<ODT>* > (vprocpaq_[i/2]);
     176        if (i%2==1)  zp= reinterpret_cast< complex<ODT>* >(vprocpaq_[i/2]+memgr_.ProcPaqSize()/2) ;
     177      }
     178      double variance=0.;
     179      for(sa_size_t f=1; f<mspecmtx_.NCols(); f++)   variance+=(double)Zmod2(zp[f]);
     180      xnt_[i]=variance;
     181      clnflg_[i]=0;
     182      if (variance<varmin_) clnflg_[i]=1;
     183      else if (variance>varmax_) clnflg_[i]=2;     
     184    }
     185  }
     186  dtp_->AddRow(xnt_);
     187  return;
     188}
     189
     190/* --Methode-- */
    118191void BRMeanSpecCalculator::SaveSpectra()
    119192{
     
    125198  char nfile[64];
    126199  string flnm;
     200  /*
    127201  {
    128202  sprintf(nfile,"mspecmtx%d.ppf",numfile_);
     
    137211  po << sigspecmtx_;
    138212  }
     213  */
     214  {
     215  sprintf(nfile,"mspecmtx%d.fits",numfile_);
     216  flnm="!"+outpath_+nfile;
     217  FitsInOutFile fos(flnm,FitsInOutFile::Fits_Create);
     218  fos << mspecmtx_;
     219  }
     220  {
     221  sprintf(nfile,"sigspecmtx%d.fits",numfile_);
     222  flnm="!"+outpath_+nfile;
     223  FitsInOutFile fos(flnm,FitsInOutFile::Fits_Create);
     224  fos << sigspecmtx_;
     225  }
     226
    139227  cout << numfile_ << "-BRMeanSpecCalculator::SaveSpectra() NPaqProc="
    140228       << totnbpaq_ << "  -> Mean/Sig spectra Matrix in " << flnm << " /sigspec...ppf" << endl;
  • trunk/AddOn/TAcq/brproc.h

    r3881 r3886  
    2222#include "ntuple.h"
    2323#include "datatable.h"
     24#include "swfitsdtable.h"
    2425#include "FFTW/fftw3.h"
    2526
     
    3940  virtual ~BRMeanSpecCalculator(); // Fait le nettoyage final , sauvegarde des objets ...
    4041
     42  inline void SetVarianceLimits(double vmin=0., double vmax=9.e99)
     43     { varmin_=vmin;  varmax_=vmax; }
     44
    4145protected:
    4246  virtual int Process();
     47  virtual void FlagBadPackets();
    4348  virtual void SaveSpectra();
     49
    4450
    4551  uint_4 nmean_;  // Nombre de spectres pour le calcul des moyennes
     
    5460  TMatrix< r_4 > sigspecmtx_;    // Matrice des sigmas des spectres 
    5561
     62  vector<int> clnflg_;      // resultat de la routine "cleaner"
     63  double varmin_, varmax_;  // limites pour la coupure sur la variance
     64  vector<uint_8> nbadpaq_;
     65
     66  FitsInOutFile* ofsdtp_;   // Output fits stream for datatable
     67  SwFitsDataTable* dtp_;    // DataTable
     68  double* xnt_;
    5669};
    5770
  • trunk/AddOn/TAcq/specmfib.cc

    r3883 r3886  
    7272
    7373    BRMeanSpecCalculator procms(mmgr, par.outpath_, par.nmean_, par.fgdatafft_, par.fgsinglechannel_);
     74    procms.SetVarianceLimits(par.vmin_, par.vmax_);
    7475    BRFFTCalculator procfft(mmgr, par.fgsinglechannel_);
    7576    if (!par.fgdatafft_) procms.SetMemZAction(MemZA_ProcB);
Note: See TracChangeset for help on using the changeset viewer.