Changeset 3915 in Sophya for trunk/AddOn/TAcq/brviscalc.cc


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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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  }
Note: See TracChangeset for help on using the changeset viewer.