Changeset 3915 in Sophya for trunk/AddOn/TAcq


Ignore:
Timestamp:
Nov 30, 2010, 10:13:51 PM (15 years ago)
Author:
ansari
Message:

1/ Modification de BRVisibilityCalculator et BRVisCalcGroup pour permettre

la specification de range de visib a calculer (firstPair, NbPairs) et
Visib(Pair-Impair) (Odd-EvenOnly)

2/ Ajout parametres de controle de range de visibilites

datacard @visipairs FirstPair NbPairs [OddEvenOnly]

Reza+cmv 30/11/2010

Location:
trunk/AddOn/TAcq
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/acqparam_exemple.d

    r3913 r3915  
    110110#  Defaut : visicalc 1024  1 1
    111111visicalc 5000  2 1
     112## Choix des visibilites (Numero de paires de canaux) a calculer
     113#  @visipairs FirstPair NbPairs [OddEvenOnly]
     114#  Par defaut @visipairs 0 999999999   ( calcul de tout )
     115#  Exemples pour 4 canaux ( 2 fibres)
     116#  @visipairs 0 8  : calcul des 8 premieres visibilites (1,1) (1,2) (1,3) (1,4)  (2,2) (2,3) (2,4)  (3,3)
     117#  @visipairs 2 6  : (1,3) (1,4) (2,2) (2,3) (2,4)  (3,3)
     118#  @visipairs 1 8  : (1,2) (1,3) (1,4) (2,2) (2,3) (2,4) (3,3) (3,4)
     119#  @visipairs 1 8  : (1,2) (1,4) (2,2) (2,3) (3,3) (3,4)
     120visipairs 0 999999999
    112121##  Binning en frequence lors du calcul (parametre en numero des frequences)
    113 #  @visicfreq freqmin freqmax nbinfreq
    114 #  Defaut: visicfreq 0 0 0   (aucun binning, toutes les frequences)
    115 visicfreq 0 0 0
     122#  @visifreq freqmin freqmax nbinfreq
     123#  Defaut: visifreq 0 0 0   (aucun binning, toutes les frequences)
     124visifreq 0 0 0
    116125########################
    117126#  Taux de perte de paquets en simulation / nombre maxi de paquets generes (Sans carte PCIExpress)
  • trunk/AddOn/TAcq/brparam.cc

    r3913 r3915  
    205205  nbcalgrpVisiC=1;
    206206  nthrVisiC=1;
     207  firstpairVisiC=0; 
     208  nbpairsVisiC=999999999;
     209  fgpimpVisiC=false;
    207210  freqminVisiC=freqmaxVisiC=0;
    208211  nbinfreqVisiC=1; 
     
    280283  stepProc=p.stepProc;
    281284  nmaxProc=p.nmaxProc;
     285
     286  fgdoVisiC=p.fgdoVisiC;           
     287  nmeanVisiC=p.nmeanVisiC;         
     288  nbcalgrpVisiC=p.nbcalgrpVisiC;     
     289  nthrVisiC=p.nthrVisiC;         
     290  firstpairVisiC=p.firstpairVisiC;
     291  nbpairsVisiC=p.nbpairsVisiC; 
     292  fgpimpVisiC=p.fgpimpVisiC;
     293  freqminVisiC=p.freqminVisiC;
     294  freqmaxVisiC=p.freqmaxVisiC;
     295  nbinfreqVisiC=p.nbinfreqVisiC;
    282296
    283297  monothr=p.monothr;
     
    363377    nthrVisiC=conf.IParam("visicalc",2,1);
    364378  }
    365   if (conf.HasKey("visicfreq")) {
    366     freqminVisiC=conf.IParam("visicfreq",0,0);
    367     freqmaxVisiC=conf.IParam("visicfreq",1,0);
    368     nbinfreqVisiC=conf.IParam("visicfreq",2,1);
     379  if (conf.HasKey("visipairs")) {
     380    firstpairVisiC=conf.IParam("visipairs",0,0);
     381    nbpairsVisiC=conf.IParam("visipairs",1,999999999);
     382    fgpimpVisiC=(conf.IParam("visipairs",2,0)>0)?true:false;
     383  }
     384  if (conf.HasKey("visifreq")) {
     385    freqminVisiC=conf.IParam("visifreq",0,0);
     386    freqmaxVisiC=conf.IParam("visifreq",1,0);
     387    nbinfreqVisiC=conf.IParam("visifreq",2,1);
    369388  }
    370389
     
    512531  if (fgdoVisiC) {
    513532    os << " Visibility calculation, nbCalGrp=" << nbcalgrpVisiC << " NThr/VisCal=" << nthrVisiC << endl;
     533    os << " ... VisiCalc FirstPair= " << firstpairVisiC << " NbPairs= " << nbpairsVisiC
     534       << ((fgpimpVisiC)?" (Odd-Even visibilities+AutoCorrel only) ":"") << endl;
    514535    os << " ... VisiCalc FrequencyBinning FreqMin= " << freqminVisiC << " FreqMax= " << freqmaxVisiC
    515536       << " NBinFreq= " << nbinfreqVisiC<< endl;
  • trunk/AddOn/TAcq/brparam.h

    r3913 r3915  
    207207  uint_4 nbcalgrpVisiC;     // Nb d'objets/threads dans BRVisCalcGroup
    208208  uint_4 nthrVisiC;         // Nb de threads pour l'execution parallele ds BRVisibilityCalculator
     209  uint_4 firstpairVisiC, nbpairsVisiC;  // Numero premiere visibilites, nombre de visibilites a calculer
     210  bool fgpimpVisiC;    // true -> calcul visibilite pair-impair + autocorrel 
    209211  uint_4 freqminVisiC, freqmaxVisiC, nbinfreqVisiC;  // si zone de frequence/rebinning pour visibilites
    210212
  • trunk/AddOn/TAcq/brviscalc.cc

    r3911 r3915  
    9393
    9494/* --Methode-- */
    95 void BRVisibilityCalculator::DefineRank(uint_4 nbc, uint_4 cid)
     95void BRVisibilityCalculator::DefineRank(uint_4 nbc, uint_4 cid, uint_4 pair1, uint_4 nbpairs, bool fgpimp)
    9696{
    9797  if ((nbc>6)||(cid>=nbc))
    9898    throw ParmError("BRVisibilityCalculator::DefineRank() NbCalc > 6 !");
     99  uint_4 maxnpairs = (2*memgr_.NbFibres()+1)*memgr_.NbFibres();
     100  if ((pair1>=maxnpairs)||(nbpairs<1))
     101    throw ParmError("BRVisibilityCalculator::DefineRank() (pair1>=maxnpairs)||(nbpairs<1) !");
     102  maxnpairs-=pair1;
     103  if (maxnpairs>nbpairs) maxnpairs=nbpairs;
     104
    99105  nbcalc_=nbc;
    100106  calcid_=cid;
    101107  if (nbcalc_>1) {
    102     uint_4 maxnpairs = (2*memgr_.NbFibres()+1)*memgr_.NbFibres();
    103     uint_4 npairs=maxnpairs/nbcalc_;
     108    uint_4 npairspth=maxnpairs/nbcalc_;  // nb de paires par thread
    104109    if (calcid_==(nbcalc_-1))
    105       SelectPairs(calcid_*npairs, maxnpairs-calcid_*npairs);
     110      SelectPairs(calcid_*npairspth+pair1, maxnpairs-calcid_*npairspth, fgpimp);
    106111    else
    107       SelectPairs(calcid_*npairs, npairs);
     112      SelectPairs(calcid_*npairspth+pair1, npairspth, fgpimp);
    108113    MemZaction mmzas[6]={MemZA_ProcA,MemZA_ProcB,MemZA_ProcC,MemZA_ProcD,MemZA_ProcE,MemZA_ProcF};
    109114    SetMemZAction(mmzas[calcid_]);
    110115    setNameId("viscalc_grp", calcid_);
    111116  }
     117  else SelectPairs(pair1,maxnpairs, fgpimp);
    112118  return ;
    113119}
    114120
    115121/* --Methode-- */
    116 uint_4 BRVisibilityCalculator::SelectPairs(uint_4 pair1, uint_4 nbpairs)
     122uint_4 BRVisibilityCalculator::SelectPairs(uint_4 pair1, uint_4 nbpairs, bool fgpimp)
    117123{
    118124  BRPaquet paq(memgr_.PaqSize());
     
    121127  if (pair1 >= maxnpairs)  pair1=maxnpairs-1;
    122128  if (nbpairs > maxnpairs-pair1)  nbpairs=maxnpairs-pair1;
     129
    123130  pairst_=pair1;
    124131  nbpairs_=nbpairs;
    125   vismtx_.SetSize(nbpairs_, paq.DataSize()/4);
    126 
    127   chanpairnum_.SetSize(nbpairs_);
    128   chanpairs_.SetSize(nbpairs_,2);
    129 
    130   return nbpairs_;
     132  fgpimp_=fgpimp;
     133
     134  uint_4 nbvisicomp=0;
     135  sa_size_t kpair=0; 
     136  for(size_t i=0; i<vpdata_.size(); i++) {
     137    for(size_t j=i; j<vpdata_.size(); j++) {
     138      kpair++;
     139      if (kpair<(pairst_+1))  continue;
     140      if (kpair>=(pairst_+nbpairs_+1))  break;
     141      if (fgpimp_&&(i!=j)&&((i+j)%2==0))  continue;  // calcul des visib avec numero pair-impair + autocorrel
     142      nbvisicomp++;
     143    }
     144  }
     145
     146  vismtx_.SetSize(nbvisicomp, paq.DataSize()/4);
     147
     148  chanpairnum_.SetSize(nbvisicomp);
     149  chanpairs_.SetSize(nbvisicomp,2);
     150
     151  return nbvisicomp;
    131152}
    132153
     
    167188      if (kpair<(pairst_+1))  continue;
    168189      if (kpair>=(pairst_+nbpairs_+1))  break;
     190      if (fgpimp_&&(i!=j)&&((i+j)%2==0))  continue;  // calcul des visib avec numero pair-impair + autocorrel
    169191      chanpairnum_(k)=chanids_(i)*CHANPAIRCONVFAC+chanids_(j);
    170192      chanpairs_(k,0)=chanids_(i);  chanpairs_(k,1)=chanids_(j);     k++;
     
    187209  cout << "BRVisibilityCalculator[" << calcid_ << "]::UpdateChanIds() Channel Ids/Pairs saved to PPF file "
    188210       << filename << endl;
    189   cout << " ... ChannelPairs= " ;
     211  cout << " ... NbVisib=NbChanPairs=" << chanpairs_.NRows() << " ChannelPairs= " ;
    190212  for(sa_size_t ir=0; ir<chanpairs_.NRows(); ir++) {
    191213    if (ir%10==0)  cout << endl;
     
    390412      if (kpair<(pairst_+1))  continue;
    391413      if (kpair>=(pairst_+nbpairs_+1))  break;
     414      if (fgpimp_&&(i!=j)&&((i+j)%2==0))  continue;  // calcul des visib avec numero pair-impair + autocorrel
    392415      TVector< complex<r_4> > vis = vismtx_.Row(k);  k++;   
    393416      for(sa_size_t f=1; f<vis.Size(); f++) {
     
    468491        if (kpair<(pairst_+1))  continue;
    469492        if (kpair>=(pairst_+nbpairs_+1))  break;
     493        if (fgpimp_&&(i!=j)&&((i+j)%2==0))  continue;  // calcul des visib avec numero pair-impair + autocorrel
    470494        TVector< complex<r_4> > vis = vismtx_.Row(k);  k++; 
    471495        for(sa_size_t f=fdeb; f<ffin; f++) {
     
    561585
    562586/* --Methode-- */
    563 BRVisCalcGroup::BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean, size_t nthr)
     587BRVisCalcGroup::BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean,
     588                               uint_4 pair1, uint_4 nbpairs, bool fgpimp, size_t nthr)
    564589  : tm_(false)
    565590{
     
    568593  for(size_t i=0; i<nbcalc; i++) {
    569594    BRVisibilityCalculator * viscp=new BRVisibilityCalculator(memgr, outpath, nmean, nthr);
    570     viscp->DefineRank(nbcalc, i);
     595    viscp->DefineRank(nbcalc, i, pair1, nbpairs, fgpimp);
    571596    viscalcp_.push_back(viscp);
    572597  }
  • trunk/AddOn/TAcq/brviscalc.h

    r3909 r3915  
    4141
    4242  // Pour definir le rang de l'objet lors d'un traitement avec plusieurs BRVisibilityCalculator en //
    43   void DefineRank(uint_4 nbc, uint_4 cid);
     43  void DefineRank(uint_4 nbc, uint_4 cid, uint_4 pair1=0, uint_4 nbpairs=999999999, bool fgpimp=false);
    4444
    4545  // Pour limiter le calcul des visibilites a certaines voies, determine par les numeros de sequences des paires
    4646  // Exemple pour 2 fibres et 4 voies
    4747  // kpair=numero sequentiel de la paire: 0->(0,0), 1->(0,1), 2->(0,2), 3->(0,3), 4->(1,1), 5->(1,2) ...
    48   uint_4 SelectPairs(uint_4 pair1=0, uint_4 nbpairs=99999999);
     48  // fgpimp=true : on calcule uniquement les visib avec un numero de voie paire, un numero de voie impair
     49  //               fgpimp=true est utile pour le calcul des visib entre deux cylindres (E-W)
     50  uint_4 SelectPairs(uint_4 pair1=0, uint_4 nbpairs=999999999, bool fgpimp=false);
    4951  // pour definir le binning en frequence pour la VisibDataTable
    5052  // par defaut, toutes les frequences avec un pas de 1
     
    7880  uint_4 nbcalc_, calcid_;  // Nombre total de threads/objets BRVisibilityCalculator parallèles, l'identificateur de l'objet 
    7981
    80   uint_4 pairst_, nbpairs_;   // Numero de la premiere paire, nombre de paires
     82  uint_4 pairst_, nbpairs_;   // Numero de la premiere paire, nombre de paires ( 1 paire= 1 visibilites)
     83  bool fgpimp_;    //  true -> calculer uniquement visibilities avec no voie pair-impair 
     84
    8185  uint_4 jf1_,jf2_,djf_;  // binning en frequence pour la datatable
    8286
     
    121125class BRVisCalcGroup {
    122126public:
    123   BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean=1000, size_t nthr=1);
     127  BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean=1000,
     128                 uint_4 pair1=0, uint_4 nbpairs=999999999, bool fgpimp=false, size_t nthr=1);
    124129  ~BRVisCalcGroup();
    125130  int SelectFreqBinning(uint_4 freq1=0, uint_4 freq2=0, uint_4 nbfreq=1);
  • trunk/AddOn/TAcq/mfacq.cc

    r3914 r3915  
    426426  MonitorProc PrThr(mmgr);
    427427  PrThr.SetMemZAction( RAcqMemZoneMgr::Convert_Status2Action( mskmon ) );
    428   BRVisCalcGroup VCGThr(acpar.nbcalgrpVisiC, mmgr, bpar.OutputDirectory(), acpar.nmeanVisiC, acpar.nthrVisiC);
     428  BRVisCalcGroup VCGThr(acpar.nbcalgrpVisiC, mmgr, bpar.OutputDirectory(), acpar.nmeanVisiC,
     429                        acpar.firstpairVisiC, acpar.nbpairsVisiC, acpar.fgpimpVisiC, acpar.nthrVisiC);
    429430  VCGThr.SelectFreqBinning(acpar.freqminVisiC, acpar.freqmaxVisiC, acpar.nbinfreqVisiC);
    430431
Note: See TracChangeset for help on using the changeset viewer.