Changeset 3646 in Sophya for trunk/AddOn/TAcq
- Timestamp:
- Jun 9, 2009, 11:50:46 PM (16 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brfitsrd.cc
r3640 r3646 42 42 TimeStamp ts; 43 43 Timer tm("BRFitsReader", false); 44 BRPaqChecker pcheck( ~fgnotrl_); // Verification/comptage des paquets44 BRPaqChecker pcheck(!fgnotrl_); // Verification/comptage des paquets 45 45 46 46 size_t totnbytesrd = 0; … … 72 72 if (fgnotrl_) { 73 73 incpaqsz=16; 74 cout << " Warning : FITS files without frame trailers ..." << endl;74 if (ifile==0) cout << " Warning : FITS files without frame trailers ..." << endl; 75 75 } 76 76 if (paqsz == 0) { // premier passage, on fixe la taille de paquet et on verifie compatibilite avec memgr -
trunk/AddOn/TAcq/brproc.cc
r3645 r3646 9 9 #include "pexceptions.h" 10 10 #include "tvector.h" 11 #include "ntuple.h" 11 12 #include "fioarr.h" 12 13 #include "timestamp.h" … … 63 64 Timer tm("BRProcARaw2C", false); 64 65 TimeStamp ts; 65 BRPaqChecker pcheck( ~fgnotrl_); // Verification/comptage des paquets66 BRPaqChecker pcheck(!fgnotrl_); // Verification/comptage des paquets 66 67 67 68 size_t totnbytesout = 0; … … 77 78 // filog << " ... NMaxMemZones=" << nmax_ << " NMean=" << nmean_ << " Step=" << step_ << endl; 78 79 80 // NTuple 81 const char* nnames[8] = {"fcs","tts","s1","s2","s12","s12re","s12im","s12phi"}; 82 NTuple nt(8, nnames); 83 double xnt[10]; 84 uint_4 nmnt = 0; 85 double ms1,ms2,ms12,ms12re,ms12im,ms12phi; 79 86 // Initialisation pour calcul FFT 80 87 TVector< complex<r_4> > cfour1; // composant TF 81 88 uint_4 paqsz = memgr.PaqSize(); 82 89 uint_4 procpaqsz = memgr.ProcPaqSize(); 90 91 83 92 BRPaquet pq(NULL, NULL, paqsz); 84 93 TVector<r_4> vx(pq.DataSize()/2); … … 86 95 FFTPackServer ffts; 87 96 ffts.FFTForward(vx, cfour1); 97 // cfour1.SetSize((paqsz-40)/2+1); 88 98 TVector< complex<r_4> > cfour2(cfour1.Size()); 89 99 … … 92 102 TVector< complex<r_4> > visiV12( cfour1.Size() ); 93 103 104 cout << " *DBG*BRProcARaw2C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 105 << " procpaqsz/2=" << procpaqsz/2 << " cfour1.Size()=" << cfour1.Size() 106 << " *8=" << cfour1.Size()*8 << endl; 94 107 95 108 fftwf_plan plan1 = fftwf_plan_dft_r2c_1d(vx.Size(), vx.Data(), … … 99 112 100 113 uint_4 ifile = 0; 101 uint_4 nzm = 0; 114 uint_4 nzm = 0; 102 115 for (uint_4 kmz=0; kmz<nmax_; kmz++) { 103 116 if (stop_) break; … … 113 126 break; 114 127 } 115 128 nmnt=0; ms1=ms2=ms12=ms12re=ms12im=ms12phi=0.; 116 129 for(uint_4 i=0; i<memgr.NbPaquets(); i++) { 117 130 BRPaquet paq(NULL, buff+i*paqsz, paqsz); 118 131 if (!pcheck.Check(paq)) continue; // on ne traite que les paquets OK 119 132 120 133 // Traitement voie 1 121 for(sa_size_t j=0; j<vx.Size(); j++)122 vx(j) = (r_4)(*(paq.Data1()+j))-127.5;134 for(sa_size_t j=0; j<vx.Size(); j++) 135 vx(j) = (r_4)(*(paq.Data1()+j))-127.5; 123 136 // fftwf_complex* coeff1 = (fftwf_complex*)(procbuff+i*procpaqsz); 124 fftwf_execute(plan1);125 // complex<r_4>* zp1 = (complex<r_4>*)(coeff1);137 fftwf_execute(plan1); 138 // complex<r_4>* zp1 = (complex<r_4>*)(vx.Data()); 126 139 // ffts.FFTForward(vx, cfour1); 127 140 for(sa_size_t j=0; j<spectreV1.Size(); j++) … … 129 142 memcpy(procbuff+i*procpaqsz, cfour1.Data(), sizeof(complex<r_4>)*cfour1.Size()); 130 143 // Traitement voie 2 131 for(sa_size_t j=0; j<vx.Size(); j++) 132 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 133 134 fftwf_execute(plan2); 135 144 for(sa_size_t j=0; j<vx.Size(); j++) 145 vx(j) = (r_4)(*(paq.Data2()+j))-127.5; 146 147 fftwf_execute(plan2); 136 148 for(sa_size_t j=0; j<spectreV2.Size(); j++) 137 149 spectreV2(j) += Zmod2(cfour2(j)); // Zmod2(zp2[j]); … … 143 155 // for(sa_size_t j=0; j<visiV12.Size(); j++) visiV12(j)+=zp1[j]*zp2[j]; 144 156 nzm++; 157 if (nmnt==0) { xnt[0]=paq.FrameCounter(); xnt[1]=paq.TimeTag(); } 158 for(sa_size_t j=2700; j<2800; j++) { 159 ms1 += Zmod2(cfour1(j)); ms2 += Zmod2(cfour2(j)); 160 complex<r_4> zvis = cfour1(j)*conj(cfour2(j)); 161 ms12 += Zmod2(zvis); ms12re += zvis.real(); ms12im += zvis.imag(); 162 ms12phi+= atan2(zvis.imag(),zvis.real()); 163 } 164 nmnt++; 145 165 totnbytesproc += paq.DataSize(); 146 166 totnbytesout += (2*sizeof(complex<r_4>)*cfour1.Size()); 147 167 148 168 } // Fin de boucle sur les paquets d'une zone 169 if (nmnt>0) { 170 double fnorm = (double)nmnt*(2800-2700); 171 xnt[2] = ms1 /= fnorm; 172 xnt[3] = ms2 /= fnorm; 173 xnt[4] = ms12 /= fnorm; 174 xnt[5] = ms12re /= fnorm; 175 xnt[6] = ms12im /= fnorm; 176 xnt[7] = ms12phi /= fnorm; 177 nt.Fill(xnt); 178 } 149 179 if ((nzm >= nmean_) || ((kmz==(nmax_-1))&&(nzm>1))) { 150 180 spectreV1 /= (r_4)(nzm); … … 184 214 cout << " ------------ BRProcARaw2C::run() END " << card2name_(card_) 185 215 << " ------------ " << endl; 216 { 217 cout << nt; 218 sprintf(fname,"%s_nt.ppf",path_.c_str()); 219 POutPersist po(fname); 220 po << PPFNameTag("ntv12") << nt; 221 cout << " BRProcARaw2C::run() created NTuple file " << fname << card2name_(card_) << endl; 222 } 186 223 ts.SetNow(); 187 224 tm.SplitQ(); … … 240 277 Timer tm("BRProcBRaw4C", false); 241 278 TimeStamp ts; 242 BRPaqChecker pcheck1( ~fgnotrl_); // Verification/comptage des paquets243 BRPaqChecker pcheck2( ~fgnotrl_); // Verification/comptage des paquets279 BRPaqChecker pcheck1(!fgnotrl_); // Verification/comptage des paquets 280 BRPaqChecker pcheck2(!fgnotrl_); // Verification/comptage des paquets 244 281 245 282 size_t totnbytesout = 0; … … 261 298 262 299 TVector< complex<r_4> > cfour; // composant TF 263 BRPaquet pq(NULL, NULL, paqsz); 300 /* 301 BRPaquet pq(NULL, NULL, paqsz); 264 302 TVector<r_4> vx(pq.DataSize()/2); 265 303 vx = (r_4)(0.); … … 271 309 TVector< complex<r_4> > visiV23( cfour.Size() ); 272 310 TVector< complex<r_4> > visiV24( cfour.Size() ); 311 */ 312 int szfour = (paqsz-40)/2+1; 313 TVector< complex<r_4> > visiV13( szfour ); 314 TVector< complex<r_4> > visiV14( szfour ); 315 TVector< complex<r_4> > visiV23( szfour ); 316 TVector< complex<r_4> > visiV24( szfour ); 317 // cout << " *DBG*AAAAA ---- Vectors OK" << endl; 318 cout << " *DBG*BRProcBRaw4C PaqSz=" << paqsz << " ProcPaqSize=" << procpaqsz 319 << " procpaqsz/2=" << procpaqsz/2 << " cfour.Size()=" << szfour 320 << " *8=" << szfour*8 << endl; 273 321 274 322 uint_4 nzm = 0; … … 281 329 uint_4 nokpaq = 0; 282 330 if (stop_) break; 331 // cout << " *DBG*BBBBB" << kmz << endl; 332 283 333 int mid1 = memgr1.FindMemZoneId(MemZA_ProcB); 284 334 Byte* buff1 = memgr1.GetMemZone(mid1); … … 305 355 uint_4 i1,i2; 306 356 i1=i2=0; 357 // cout << " *DBG*CCCCCC " << kmz << " memgr1.NbPaquets() =" << memgr1.NbPaquets() << endl; 307 358 while((i1<memgr1.NbPaquets())&&(i2<memgr2.NbPaquets())) { 308 359 BRPaquet paq1(NULL, buff1+i1*paqsz, paqsz); … … 320 371 // <<","<<paq2.FrameCounter()<<endl; 321 372 373 if ((i1>=memgr1.NbPaquets())||(i2>=memgr1.NbPaquets())) { 374 cout << " *BUG*BUG i1=" << i1 << " i2=" << i2 << endl; 375 break; 376 } 322 377 // Les deux framecounters sont identiques ... 323 378 noksfc++; … … 335 390 totnbytesproc += 2*paq1.DataSize(); 336 391 } // Fin de boucle sur les paquets d'une zone 392 memgr1.FreeMemZone(mid1, MemZS_ProcB); 393 memgr2.FreeMemZone(mid2, MemZS_ProcB); 394 337 395 if ((nzm >= nmean_) || ((kmz==(nmax_-1))&&(nzm>1))) { 338 396 visiV13 /= complex<r_4>((r_4)nzm, 0.); … … 357 415 visiV23 = complex<r_4>(0., 0.); 358 416 visiV24 = complex<r_4>(0., 0.); 359 nzm = 0; 417 nzm = 0; ifile++; 360 418 // ts.SetNow(); 361 419 // filog << ts << " : proc file " << fname << endl; 362 420 cout << " BRProcBRaw4C::run() created file " << fname << endl; 363 421 } 364 memgr1.FreeMemZone(mid1, MemZS_ProcB);365 memgr2.FreeMemZone(mid2, MemZS_ProcB);366 422 double okfrac = (nokpaq>1)?((double)noksfc/(double)nokpaq*100.):0.; 367 cout << "BRProcBRaw 2C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc423 cout << "BRProcBRaw4C ["<<kmz<<"] NOKPaq=" << nokpaq << " NSameFC=" << noksfc 368 424 << " (" << okfrac << " %)" << endl; 369 425 totnokpaq += nokpaq; -
trunk/AddOn/TAcq/makefile
r3645 r3646 2 2 3 3 # all : traidio tmtfft tstminifits tbrpaq tpciew tmtacq tstrdfits mfits2spec tsok 4 all : traidio tmtfft tstminifits tmtacq tstrdfits mfits2spec tsok mcrd 4 # all : traidio tmtfft tstminifits tmtacq tstrdfits mfits2spec tsok mcrd 5 all : traidio tstminifits tmtacq mfits2spec mcrd svv2mtx 5 6 6 7 clean : 7 rm -f *.o traidio tmtfft tstminifits tpciew tbrpaq tmtacq tstrdfits mfits2spec mcrd 8 rm -f *.o traidio tmtfft tstminifits tpciew tbrpaq tmtacq tstrdfits mfits2spec mcrd svv2mtx 8 9 rm -f mfits2spec tsok *.ppf *.fits 9 10 … … 40 41 $(CXXCOMPILE) -c -o brproc.o brproc.cc 41 42 43 ## -------------- 44 svv2mtx : svv2mtx.o 45 $(CXXLINK) -o svv2mtx svv2mtx.o $(SOPHYAEXTSLBLIST) 46 47 svv2mtx.o : svv2mtx.cc 48 $(CXXCOMPILE) -o svv2mtx.o svv2mtx.cc 42 49 43 50 ## -------------- -
trunk/AddOn/TAcq/mcrd.cc
r3645 r3646 83 83 string act = arg[1]; 84 84 bool fg4c=false; // true -> 4 channels (2 fibers) 85 bool fgrdfits= false; // false -> Don't read fits files, generate paquets85 bool fgrdfits=true; // false -> Don't read fits files, generate paquets 86 86 bool fgnotrl=false; // true -> fichier fits SANS Trailer de frame (< mai 2009) 87 87 if (act.substr(0,2)=="-4") fg4c=true; … … 242 242 243 243 cout << " mcrd/Proc2FRawAB: Starting threads (reader1,2, procA1,2, procAB) ... " << endl; 244 244 // cout << "[1]--- CR to continue ..." << endl; char ans[32]; gets(ans); 245 245 if (fgrdfile) { 246 246 reader1.start(); … … 251 251 pcird2.start(); 252 252 } 253 // sleep(1); mmgr1.Print(cout); mmgr2.Print(cout); 253 254 proc1.start(); 254 255 proc2.start();
Note:
See TracChangeset
for help on using the changeset viewer.