Changeset 3915 in Sophya for trunk/AddOn/TAcq
- Timestamp:
- Nov 30, 2010, 10:13:51 PM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/acqparam_exemple.d
r3913 r3915 110 110 # Defaut : visicalc 1024 1 1 111 111 visicalc 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) 120 visipairs 0 999999999 112 121 ## Binning en frequence lors du calcul (parametre en numero des frequences) 113 # @visi cfreq freqmin freqmax nbinfreq114 # Defaut: visi cfreq 0 0 0 (aucun binning, toutes les frequences)115 visi cfreq 0 0 0122 # @visifreq freqmin freqmax nbinfreq 123 # Defaut: visifreq 0 0 0 (aucun binning, toutes les frequences) 124 visifreq 0 0 0 116 125 ######################## 117 126 # Taux de perte de paquets en simulation / nombre maxi de paquets generes (Sans carte PCIExpress) -
trunk/AddOn/TAcq/brparam.cc
r3913 r3915 205 205 nbcalgrpVisiC=1; 206 206 nthrVisiC=1; 207 firstpairVisiC=0; 208 nbpairsVisiC=999999999; 209 fgpimpVisiC=false; 207 210 freqminVisiC=freqmaxVisiC=0; 208 211 nbinfreqVisiC=1; … … 280 283 stepProc=p.stepProc; 281 284 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; 282 296 283 297 monothr=p.monothr; … … 363 377 nthrVisiC=conf.IParam("visicalc",2,1); 364 378 } 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); 369 388 } 370 389 … … 512 531 if (fgdoVisiC) { 513 532 os << " Visibility calculation, nbCalGrp=" << nbcalgrpVisiC << " NThr/VisCal=" << nthrVisiC << endl; 533 os << " ... VisiCalc FirstPair= " << firstpairVisiC << " NbPairs= " << nbpairsVisiC 534 << ((fgpimpVisiC)?" (Odd-Even visibilities+AutoCorrel only) ":"") << endl; 514 535 os << " ... VisiCalc FrequencyBinning FreqMin= " << freqminVisiC << " FreqMax= " << freqmaxVisiC 515 536 << " NBinFreq= " << nbinfreqVisiC<< endl; -
trunk/AddOn/TAcq/brparam.h
r3913 r3915 207 207 uint_4 nbcalgrpVisiC; // Nb d'objets/threads dans BRVisCalcGroup 208 208 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 209 211 uint_4 freqminVisiC, freqmaxVisiC, nbinfreqVisiC; // si zone de frequence/rebinning pour visibilites 210 212 -
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 } -
trunk/AddOn/TAcq/brviscalc.h
r3909 r3915 41 41 42 42 // 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); 44 44 45 45 // Pour limiter le calcul des visibilites a certaines voies, determine par les numeros de sequences des paires 46 46 // Exemple pour 2 fibres et 4 voies 47 47 // 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); 49 51 // pour definir le binning en frequence pour la VisibDataTable 50 52 // par defaut, toutes les frequences avec un pas de 1 … … 78 80 uint_4 nbcalc_, calcid_; // Nombre total de threads/objets BRVisibilityCalculator parallèles, l'identificateur de l'objet 79 81 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 81 85 uint_4 jf1_,jf2_,djf_; // binning en frequence pour la datatable 82 86 … … 121 125 class BRVisCalcGroup { 122 126 public: 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); 124 129 ~BRVisCalcGroup(); 125 130 int SelectFreqBinning(uint_4 freq1=0, uint_4 freq2=0, uint_4 nbfreq=1); -
trunk/AddOn/TAcq/mfacq.cc
r3914 r3915 426 426 MonitorProc PrThr(mmgr); 427 427 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); 429 430 VCGThr.SelectFreqBinning(acpar.freqminVisiC, acpar.freqmaxVisiC, acpar.nbinfreqVisiC); 430 431
Note:
See TracChangeset
for help on using the changeset viewer.