Changeset 3915 in Sophya for trunk/AddOn/TAcq/brviscalc.cc
- Timestamp:
- Nov 30, 2010, 10:13:51 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brviscalc.cc
r3911 r3915 93 93 94 94 /* --Methode-- */ 95 void BRVisibilityCalculator::DefineRank(uint_4 nbc, uint_4 cid )95 void BRVisibilityCalculator::DefineRank(uint_4 nbc, uint_4 cid, uint_4 pair1, uint_4 nbpairs, bool fgpimp) 96 96 { 97 97 if ((nbc>6)||(cid>=nbc)) 98 98 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 99 105 nbcalc_=nbc; 100 106 calcid_=cid; 101 107 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 104 109 if (calcid_==(nbcalc_-1)) 105 SelectPairs(calcid_*npairs , maxnpairs-calcid_*npairs);110 SelectPairs(calcid_*npairspth+pair1, maxnpairs-calcid_*npairspth, fgpimp); 106 111 else 107 SelectPairs(calcid_*npairs , npairs);112 SelectPairs(calcid_*npairspth+pair1, npairspth, fgpimp); 108 113 MemZaction mmzas[6]={MemZA_ProcA,MemZA_ProcB,MemZA_ProcC,MemZA_ProcD,MemZA_ProcE,MemZA_ProcF}; 109 114 SetMemZAction(mmzas[calcid_]); 110 115 setNameId("viscalc_grp", calcid_); 111 116 } 117 else SelectPairs(pair1,maxnpairs, fgpimp); 112 118 return ; 113 119 } 114 120 115 121 /* --Methode-- */ 116 uint_4 BRVisibilityCalculator::SelectPairs(uint_4 pair1, uint_4 nbpairs )122 uint_4 BRVisibilityCalculator::SelectPairs(uint_4 pair1, uint_4 nbpairs, bool fgpimp) 117 123 { 118 124 BRPaquet paq(memgr_.PaqSize()); … … 121 127 if (pair1 >= maxnpairs) pair1=maxnpairs-1; 122 128 if (nbpairs > maxnpairs-pair1) nbpairs=maxnpairs-pair1; 129 123 130 pairst_=pair1; 124 131 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; 131 152 } 132 153 … … 167 188 if (kpair<(pairst_+1)) continue; 168 189 if (kpair>=(pairst_+nbpairs_+1)) break; 190 if (fgpimp_&&(i!=j)&&((i+j)%2==0)) continue; // calcul des visib avec numero pair-impair + autocorrel 169 191 chanpairnum_(k)=chanids_(i)*CHANPAIRCONVFAC+chanids_(j); 170 192 chanpairs_(k,0)=chanids_(i); chanpairs_(k,1)=chanids_(j); k++; … … 187 209 cout << "BRVisibilityCalculator[" << calcid_ << "]::UpdateChanIds() Channel Ids/Pairs saved to PPF file " 188 210 << filename << endl; 189 cout << " ... ChannelPairs= " ;211 cout << " ... NbVisib=NbChanPairs=" << chanpairs_.NRows() << " ChannelPairs= " ; 190 212 for(sa_size_t ir=0; ir<chanpairs_.NRows(); ir++) { 191 213 if (ir%10==0) cout << endl; … … 390 412 if (kpair<(pairst_+1)) continue; 391 413 if (kpair>=(pairst_+nbpairs_+1)) break; 414 if (fgpimp_&&(i!=j)&&((i+j)%2==0)) continue; // calcul des visib avec numero pair-impair + autocorrel 392 415 TVector< complex<r_4> > vis = vismtx_.Row(k); k++; 393 416 for(sa_size_t f=1; f<vis.Size(); f++) { … … 468 491 if (kpair<(pairst_+1)) continue; 469 492 if (kpair>=(pairst_+nbpairs_+1)) break; 493 if (fgpimp_&&(i!=j)&&((i+j)%2==0)) continue; // calcul des visib avec numero pair-impair + autocorrel 470 494 TVector< complex<r_4> > vis = vismtx_.Row(k); k++; 471 495 for(sa_size_t f=fdeb; f<ffin; f++) { … … 561 585 562 586 /* --Methode-- */ 563 BRVisCalcGroup::BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean, size_t nthr) 587 BRVisCalcGroup::BRVisCalcGroup(size_t nbcalc, RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean, 588 uint_4 pair1, uint_4 nbpairs, bool fgpimp, size_t nthr) 564 589 : tm_(false) 565 590 { … … 568 593 for(size_t i=0; i<nbcalc; i++) { 569 594 BRVisibilityCalculator * viscp=new BRVisibilityCalculator(memgr, outpath, nmean, nthr); 570 viscp->DefineRank(nbcalc, i );595 viscp->DefineRank(nbcalc, i, pair1, nbpairs, fgpimp); 571 596 viscalcp_.push_back(viscp); 572 597 }
Note:
See TracChangeset
for help on using the changeset viewer.