Changeset 3944 in Sophya
- Timestamp:
- Feb 4, 2011, 5:51:53 PM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brproc.cc
r3943 r3944 94 94 95 95 // cout << "(JEC) creation tuple de " << nchan*(1+numberOfBands_) << " doubles " << endl; 96 // xnt_=new double[nchan*(1+numberOfBands_)]; // CHECK : ATTENTION la taille depend de nombre de colonne du NTuple !97 xnt_= NULL;96 // CHECK : ATTENTION , on alloue une taille minimum pour le tableau xnt, reallocation si DefineDataTable() appele 97 xnt_=new double[nchan*2]; 98 98 } 99 99 … … 168 168 // xnt_=new double[nchan*2]; CHECK : faut-il reallouer ? 169 169 cout << "(JEC) creation tuple de " << nchan*(1+numberOfBands_) << " doubles " << endl; 170 if (xnt_) delete[] xnt_; 170 171 xnt_=new double[nchan*(1+numberOfBands_)]; 171 172 cout << "(JEC) BRMeanSpecCalculator::DefineDataTable END" << endl; -
trunk/AddOn/TAcq/racquproc.cc
r3920 r3944 155 155 156 156 /* --Methode-- */ 157 int MonitorProc::procData1C(ofstream& logf) 158 { 159 cout << " MonitorProc::procData1C() - NOT IMPLEMENTED -> Rc=67" << endl; 160 logf << " MonitorProc::procData1C() - NOT IMPLEMENTED -> Rc=67" << endl; 161 return 67; 157 int MonitorProc::procData1C(ofstream& filog) 158 { 159 /* 160 if (par_.fgdatafft) { 161 cout << " MonitorProc::procData1C() - NOT IMPLEMENTED for 1 channel FFT data -> Rc=67" << endl; 162 filog << " MonitorProc::procData1C() - NOT IMPLEMENTED for 1 channel FFT data -> Rc=67" << endl; 163 return 67; 164 } 165 */ 166 BRPaqChecker pcheck[MAXNBFIB]; // Verification/comptage des paquets 167 // Initialisation pour calcul FFT 168 uint_4 paqsz = memgr.PaqSize(); 169 BRPaquet pq(paqsz); 170 TVector<r_4> vx(pq.DataSize()); 171 vx = (r_4)(0.); 172 TVector< complex<r_4> > cfour(pq.DataSize()/2+1); // composant TF 173 174 fftwf_plan plan = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), 175 (fftwf_complex *)cfour.Data(), FFTW_ESTIMATE); 176 177 // Histo pour valeurs des bytes dans les paquets 178 Histo* phist[MAXNBFIB]; 179 Histo2D* ph2[MAXNBFIB]; 180 Histo* phexp[MAXNBFIB]; 181 TMatrix<r_4>* psatur[MAXNBFIB]; 182 TVector<uint_4>* pvsatfreq[MAXNBFIB]; 183 for(int ifib=0; ifib<MAXNBFIB; ifib++) { 184 phist[ifib]=NULL; ph2[ifib]=NULL; phexp[ifib]=NULL; psatur[ifib]=NULL; 185 } 186 if (par_.fgdatafft) { // data de type FFT 187 for(sa_size_t lc=0; lc<memgr.NbFibres(); lc++) { 188 phist[lc] = new Histo(-128.5,+128.5,257); 189 ph2[lc] = new Histo2D(-128.5,+128.5,257, -128.5,+128.5,257); 190 phexp[lc] = new Histo(-128.5,+128.5,257); 191 psatur[lc] = new TMatrix<r_4>(3,3); 192 pvsatfreq[lc] = new TVector<uint_4>(spectre_.NCols()); 193 *psatur[lc] = 0.; 194 } 195 } 196 else { 197 for(sa_size_t lc=0; lc<memgr.NbFibres(); lc++) 198 phist[lc] = new Histo(-0.5,256.5,257); 199 } 200 201 TimeStamp ts; 202 char fname[512]; 203 nfiles_ = 0; 204 for (uint_4 kmz=0; kmz<nmax_; kmz++) { 205 if (stop_) break; 206 if (memgr.GetRunState() == MemZR_Stopped) break; 207 208 int mid = memgr.FindMemZoneId(mmact_); // MemZA_Proc 209 Byte* buffg = memgr.GetMemZone(mid); 210 if (buffg == NULL) { 211 cout << " MonitorProc::procData1C()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl; 212 break; 213 } 214 if ((step_>1)&&(kmz%step_ != 0)) { 215 memgr.FreeMemZone(mid, mmsta_); // MemZS_Proc); 216 continue; 217 } 218 sa_size_t lc=0; 219 Byte* fbuff[MAXNBFIB]; 220 for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) { // Boucle sur les fibres 221 fbuff[fib] = memgr.GetMemZone(mid,fib); 222 if (fbuff[fib] == NULL) { // cela ne devrait pas arriver 223 cout << " MonitorProc::procData1C()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl; 224 return 9; 225 } 226 } 227 228 // DBG-ATTENTION : freq 0 pour expo full FFT si reordonne 229 // int idxexpo=(par_.fgfftshrink)?1023:0; // exposant FFT shrink 1024 freq, ou freq 0 pour full-FFT 230 int idxexpo=0; 231 232 cpaqok_ = (uint_1)0; 233 curfc_ = (uint_8)0; 234 for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) { 235 for(uint_4 i=0; i<memgr.NbPaquets(); i++) { 236 BRPaquet paq(fbuff[fib]+i*paqsz, paqsz); 237 bool pqok=pcheck[fib].Check(paq,curfc_(fib,i)); // Verification du paquet / FrameCounter 238 if (!pqok) continue; 239 cpaqok_(fib,i) = 1; 240 sa_size_t lc=fib; 241 if (par_.fgdatafft) { // Traitement data de type FFT 242 TwoByteComplex* tbcp=paq.Data1C(); 243 244 // exposant FFT 245 phexp[lc]->Add((r_4)tbcp[idxexpo].realD()); 246 247 for(sa_size_t j=1; j<spectre_.NCols(); j++) { 248 phist[lc]->Add((r_4)tbcp[j].realD()); 249 phist[lc]->Add((r_4)tbcp[j].imagD()); 250 ph2[lc]->Add((r_4)tbcp[j].realD(), (r_4)tbcp[j].imagD()); 251 // comptage saturation 252 int sir=0, sii=0; // saturation partie reelle, partie imaginaire 253 if (tbcp[j].realI()==-128) sir=-1; 254 else if (tbcp[j].realI()==127) sir=1; 255 if (tbcp[j].imagI()==-128) sii=-1; 256 else if (tbcp[j].imagI()==127) sii=1; 257 (*psatur[lc])(sir+1,sii+1)+=1.; 258 if ((sir!=0)||(sii!=0)) (*pvsatfreq[lc])(j)+=1; 259 spectre_(lc,j) += Zmod2(tbcp[j]); 260 } 261 nzm_[lc]++; 262 } 263 else { // Traitement RawData 264 for(sa_size_t j=0; j<vx.Size(); j++) { 265 phist[lc]->Add((r_8)(*(paq.Data1()+j))); 266 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 267 } 268 fftwf_execute(plan); 269 // ffts_.FFTForward(vx, cfour_); 270 for(sa_size_t j=0; j<spectre_.NCols(); j++) 271 spectre_(lc,j) += Zmod2(cfour(j+1)); 272 nzm_[lc]++; lc++; 273 } 274 } // FIN de la boucle sur les paquets 275 } // Boucle sur les fibres 276 memgr.FreeMemZone(mid, mmsta_); // MemZS_Proc); 277 CheckFrameCounters(); 278 279 nblocproc_ ++; 280 totnprocpaq_ += memgr.NbPaquets(); nprocpaq_ += memgr.NbPaquets(); 281 bool fgnzm=true; 282 for(int lc=0; lc<memgr.NbFibres(); lc++) 283 if (nzm_[lc]<nmean_) fgnzm=false; 284 285 if (fgnzm) { 286 char buff[32]; 287 for(sa_size_t lc=0; lc<memgr.NbFibres(); lc++) { 288 spectre_.Row(lc) /= (r_4)nzm_[lc]; 289 sprintf(buff,"NPaqMoy%d",(int)lc); 290 spectre_.Info()[buff] = nzm_[lc]; 291 } 292 sprintf(fname,"%s/meanspec%d.ppf",path_.c_str(),(int)nfiles_); 293 nfiles_++; 294 POutPersist po(fname); 295 po << PPFNameTag("spectre") << spectre_; 296 spectre_ = (r_4)(0.); 297 char buftag[32]; 298 for(int lc=0; lc<memgr.NbFibres(); lc++) { 299 sprintf(buftag,"hvalV%d",(int)lc); 300 po << PPFNameTag(buftag) << (*phist[lc]); 301 phist[lc]->Zero(); 302 if (par_.fgdatafft) { // data de type FFT 303 sprintf(buftag,"h2dV%d",(int)lc); 304 po << PPFNameTag(buftag) << (*ph2[lc]); 305 ph2[lc]->Zero(); 306 sprintf(buftag,"hexpV%d",(int)lc); 307 po << PPFNameTag(buftag) << (*phexp[lc]); 308 phexp[lc]->Zero(); 309 sprintf(buftag,"saturV%d",(int)lc); 310 po << PPFNameTag(buftag) << (*psatur[lc]); 311 (*psatur[lc])=0.; 312 sprintf(buftag,"satfreqV%d",(int)lc); 313 po << PPFNameTag(buftag) << (*pvsatfreq[lc]); 314 (*pvsatfreq[lc])=0; 315 } 316 nzm_[lc]=0; 317 } 318 ts.SetNow(); 319 // Calcul / impression fraction des paquets avec same-framecounter 320 int fracsame=0; 321 if (nprocpaq_>0) fracsame=100*npaqsamefc_/nprocpaq_; 322 int totfracsame=0; 323 if (totnprocpaq_>0) totfracsame=100*totnpaqsamefc_/totnprocpaq_; 324 filog << ts << " : proc file (meanspectra) " << fname << endl; 325 filog << " NBlocProcessed=" << nblocproc_ << " NSameFC=" << totnpaqsamefc_ << " / " << totnprocpaq_ 326 << " -> " << totfracsame << " % (LastPqs: " << npaqsamefc_ << " / " << nprocpaq_ 327 << " -> " << fracsame << " % )" << endl; 328 cout << " MonitorProc::procData1C() " << ts << " : created file " << fname << endl; 329 cout << " NBlocProcessed=" << nblocproc_ << " NSameFC=" << totnpaqsamefc_ << " / " << totnprocpaq_ 330 << " -> " << totfracsame << " % (LastPqs: " << npaqsamefc_ << " / " << nprocpaq_ 331 << " -> " << fracsame << " % )" << endl; 332 nprocpaq_=npaqsamefc_=0; 333 } 334 } // Fin de boucle sur les kmz ( bloc MemZoneMgr a traiter ) 335 336 bool fgnzm=false; 337 for(int lc=0; lc<memgr.NbFibres(); lc++) 338 if (nzm_[lc]>0) fgnzm=true; 339 340 if (fgnzm) { 341 char buff[32]; 342 for(sa_size_t lc=0; lc<memgr.NbFibres(); lc++) { 343 if (nzm_[lc]>0) spectre_.Row(lc) /= (r_4)nzm_[lc]; 344 sprintf(buff,"NPaqMoy%d",(int)lc); 345 spectre_.Info()[buff] = nzm_[lc]; 346 } 347 sprintf(fname,"%s/meanspec%d.ppf",path_.c_str(),(int)nfiles_); 348 POutPersist po(fname); 349 po << PPFNameTag("spectre") << spectre_; 350 spectre_ = (r_4)(0.); 351 char buftag[32]; 352 for(int lc=0; lc<memgr.NbFibres(); lc++) { 353 sprintf(buftag,"hvalV%d",(int)lc); 354 po << PPFNameTag(buftag) << (*phist[lc]); 355 delete phist[lc]; 356 if (par_.fgdatafft) { // data de type FFT 357 sprintf(buftag,"h2dV%d",(int)lc); 358 po << PPFNameTag(buftag) << (*ph2[lc]); 359 delete ph2[lc]; 360 sprintf(buftag,"hexpV%d",(int)lc); 361 po << PPFNameTag(buftag) << (*phexp[lc]); 362 delete phexp[lc]; 363 sprintf(buftag,"saturV%d",(int)lc); 364 po << PPFNameTag(buftag) << (*psatur[lc]); 365 sprintf(buftag,"satfreqV%d",(int)lc); 366 po << PPFNameTag(buftag) << (*pvsatfreq[lc]); 367 delete psatur[lc]; 368 delete pvsatfreq[lc]; 369 } 370 nzm_[lc]=0; 371 } 372 ts.SetNow(); 373 // Calcul / impression fraction des paquets avec same-framecounter 374 int fracsame=0; 375 if (nprocpaq_>0) fracsame=100*npaqsamefc_/nprocpaq_; 376 int totfracsame=0; 377 if (totnprocpaq_>0) totfracsame=100*totnpaqsamefc_/totnprocpaq_; 378 filog << ts << " : proc file (meanspectra) " << fname << endl; 379 filog << " NBlocProcessed=" << nblocproc_ << " NSameFC=" << totnpaqsamefc_ << " / " << totnprocpaq_ 380 << " -> " << totfracsame << " % (LastPqs: " << npaqsamefc_ << " / " << nprocpaq_ 381 << " -> " << fracsame << " % )" << endl; 382 cout << " MonitorProc::procData1C() " << ts << " : created file " << fname << endl; 383 cout << " NBlocProcessed=" << nblocproc_ << " NSameFC=" << totnpaqsamefc_ << " / " << totnprocpaq_ 384 << " -> " << totfracsame << " % (LastPqs: " << npaqsamefc_ << " / " << nprocpaq_ 385 << " -> " << fracsame << " % )" << endl; 386 } 387 return 0; 162 388 } 163 389
Note:
See TracChangeset
for help on using the changeset viewer.