Changeset 3993 in Sophya
- Timestamp:
- May 13, 2011, 12:37:14 AM (14 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/branap.cc
r3992 r3993 22 22 istep_=1; 23 23 rdsamefc_=true; // read paquets with same frame counter 24 freqmin_= freqmax_=0;24 freqmin_=0; freqmax_=-1; 25 25 nbinfreq_=1; 26 26 paqsize_=16424; … … 40 40 vmin_=0.; vmax_=9e99; 41 41 nbands_=0; bandfirst_ = bandlast_ = 0; 42 fgdt _ = false;42 fgdtpaq_ = fgdtms_ = false; 43 43 44 44 fgfreqfilter_=false; //JEC 1/2/11 … … 133 133 ka+=2; 134 134 } 135 else if (strcmp(arg[ka],"-filldt")==0) { 136 fgdt_=true; 135 else if (strcmp(arg[ka],"-fdtpaq")==0) { 136 fgdtpaq_=true; 137 ka++; 138 } 139 else if (strcmp(arg[ka],"-fdtms")==0) { 140 fgdtms_=true; 137 141 ka++; 138 142 } … … 205 209 << " [-freqfilter medhw] [-gain filename] [-varcut min,max] [-nband nband,first,last] \n" 206 210 << " [-freqfilter] [-gain filename] [-varcut min,max] [-nband nband,first,last] \n" 207 << " [-tmproc hh:mm:ss,nseconds] [-f illdt] [-tspwin wsz,extsz,nfiles] \n"211 << " [-tmproc hh:mm:ss,nseconds] [-fdtpaq] [-fdtms] [-tspwin wsz,extsz,nfiles] \n" 208 212 << " -in Imin,Imax,Istep InPath FiberList [InPath2 FiberList2 InPath3 FiberList3 ...] \n" << endl; 209 213 if (fgshort) { … … 232 236 << " -fftdata : Force FFT data mode (firmware fft) \n" 233 237 << " -varcut min,max : min-max cut on variance \n" 234 << " -nband nband,first,last: numbers of freq. bands and first and last bands used for cuts 238 << " -nband nband,first,last: numbers of freq. bands and first and last bands used for cuts\n" 235 239 << " -tmproc hh:mm:ss,nseconds : processing time window definition \n" 236 << " -filldt : force data table filling \n" 240 << " -fdtpaq : force per paquet data table filling (specmfib) \n" 241 << " -fdtms : force time averaged/filtered data table filling; use -freq for defining bands (specmfib)\n" 237 242 << " -freqfilter medhw: force median filtering on the frequencies \n" 238 243 << " with half window width medhw (use - for default=" << medhalfwidth_ << ") \n" … … 283 288 cout << " Action=" << action_ << " NMean=" << nmean_ << " NBloc=" << nbloc_ << endl; 284 289 cout << " FreqMin= " << freqmin_ << " FreqMax= " << freqmax_ << " NBinFreq= " << nbinfreq_ << endl; 285 cout<< ((fgdt_)?" Fill DadaTable ":" NO DataTable") << endl; 290 if (fgdtpaq_) cout<< " Fill Per Paquet DadaTable "; 291 if (fgdtms_) cout<< " Fill Time Averaged/Filtered binned power DataTable "; 292 if (!fgdtpaq_&&!fgdtms_) cout << " NO DataTable " << endl; 293 else cout << endl; 286 294 cout << " GainFileName=" << gainfile_ << " Variance: Min= " << vmin_ << " Max= " << vmax_ 287 295 << " Bands: N=" << nbands_ << " First=" << bandfirst_ << " Last=" << bandlast_ -
trunk/AddOn/TAcq/branap.h
r3992 r3993 58 58 double vmin_,vmax_; // coupure min-max sur la variance 59 59 int nbands_,bandfirst_,bandlast_; //bandes en frequences pour mean, variance et cut 60 bool fgdt_; //if true fill datatable 60 bool fgdtpaq_; //if true fill per per paquet datatable 61 bool fgdtms_; //if true fill time avergared/filtered spectral power datatable 61 62 62 63 bool fgfreqfilter_; // if true force median filtering on the frequencies … … 65 66 string gainfile_; // nom du fichier de gain (reponse spectrale) 66 67 68 // Remplissage DataTable power = f(time) 69 67 70 // definition fenetre en temps pour le traitement des paquets 68 71 SOPHYA::TimeStamp proctimestart_; // temps de debut de la fenetre -
trunk/AddOn/TAcq/brbaseproc.cc
r3982 r3993 40 40 fgokallfibers_=true; 41 41 totprocnpaq_=0; 42 startdate_=0; 42 43 setNameId("baseproc",0); 43 44 ClearProcTimeWindow(); … … 119 120 } 120 121 cts_=memgr_.GetAuxData(mid_)->FillTime(); // get associated date/time (DATEOBS) 122 if (startdate_==0) startdate_=cts_.DaysPart(); 123 121 124 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { 122 125 fbuff_[fib] = memgr_.GetMemZone(mid_,fib); -
trunk/AddOn/TAcq/brbaseproc.h
r3979 r3993 50 50 // get Observation Time ( obtained from MemZoneMgr ) 51 51 inline SOPHYA::TimeStamp& getObsTime() { return cts_; } 52 // get Obsservation time in seconds since the start date 53 // Temps ecoule en seconde a partir de 0h00 de la date du premier fichier 54 inline double getObsTimeSeconds() { return ((cts_.DaysPart()-startdate_)*86400.+cts_.SecondsPart()); } 55 52 56 // Attention : les methodes suivantes ne sont pas protegees pour le numero de fibre 53 57 // Renvoie le numero de frame-counter courant - si fgz=true, soustrait le FC du premier paquet … … 89 93 uint_8 totprocnpaq_; 90 94 SOPHYA::TimeStamp cts_; // current time stamp, get from MemZoneMgr 95 int_8 startdate_; // Temps de depart cts_.DaysPart() 91 96 92 97 string bpnom_; // nom du processeur -
trunk/AddOn/TAcq/brproc.cc
r3946 r3993 73 73 numfile_=0; 74 74 totnbpaq_=0; 75 moyfc_=moytt_=0.; 76 nbpmoyttfc_=0; 75 77 76 78 size_t nchan=(fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres()); … … 79 81 nbpaq4mean_[i]=nbadpaq_[i]=0; 80 82 } 81 82 //83 83 84 84 … … 92 92 ofsdtp_=NULL; 93 93 dtp_=NULL; 94 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 94 xnt_=NULL; 95 ofsdtpms_=NULL; 96 dtpms_=NULL; 97 xntms_=NULL; 98 firstfreqms_=0; 99 lastfreqms_=-1; 100 nbandms_=-1; 98 101 } 99 102 … … 113 116 delete ofsdtp_; 114 117 } 118 if (dtpms_) { 119 cout << *dtpms_; 120 delete dtpms_; 121 delete ofsdtpms_; 122 } 115 123 if (xnt_) delete xnt_; 124 if (xntms_) delete xntms_; 116 125 cout << " ------------------------------------------------------------------------ " << endl; 117 126 } … … 142 151 143 152 /* --Methode-- */ 144 void BRMeanSpecCalculator::Define DataTable()145 { 146 cout << " (JEC) BRMeanSpecCalculator::DefineDataTable START" << endl;147 string dtfile="!"+outpath_+"/dtspec .fits";153 void BRMeanSpecCalculator::DefinePerPaquetDataTable() 154 { 155 cout << "BRMeanSpecCalculator::DefinePerPaquetDataTable: Creating DataTable" << endl; 156 string dtfile="!"+outpath_+"/dtspecpaq.fits"; 148 157 ofsdtp_ = new FitsInOutFile(dtfile,FitsInOutFile::Fits_Create); 149 158 dtp_ = new SwFitsDataTable(*ofsdtp_,1024,true); 150 159 char cnom[32]; 151 size_t nchan= (fgsinglechannel_?memgr_.NbFibres():2*memgr_.NbFibres());160 size_t nchan=mspecmtx_.NRows(); 152 161 for(int i=0; i<nchan; i++) { 153 162 sprintf(cnom,"variance%d",i); … … 161 170 } 162 171 /* 163 for(int i=0; i<nchan; i++) {172 for(int i=0; i<nchan; i++) { 164 173 sprintf(cnom,"sigma%d",i); 165 174 dtp_->AddFloatColumn(cnom); 166 }175 } 167 176 */ 168 177 // xnt_=new double[nchan*2]; CHECK : faut-il reallouer ? 169 cout << " (JEC) creation tuple de " << nchan*(1+numberOfBands_) << " doubles "<< endl;178 cout << " ...Number of columns " << nchan*(1+numberOfBands_) << " doubles -> to FITS file" << dtfile << endl; 170 179 xnt_=new double[nchan*(1+numberOfBands_)]; 171 cout << "(JEC) BRMeanSpecCalculator::DefineDataTable END" << endl; 180 181 } 182 183 /* --Methode-- */ 184 void BRMeanSpecCalculator::DefineTimeAvgPowerDataTable(int first, int last, int nband) 185 { 186 cout << "BRMeanSpecCalculator::DefineTimeAvgPowerDataTable: Creating time averged power spectrum" << endl; 187 string dtfile="!"+outpath_+"/avgspec.fits"; 188 ofsdtpms_ = new FitsInOutFile(dtfile,FitsInOutFile::Fits_Create); 189 dtpms_ = new SwFitsDataTable(*ofsdtpms_,1024,true); 190 dtpms_->AddDoubleColumn("mtimetag"); 191 dtpms_->AddDoubleColumn("time"); 192 193 if (last>first) { 194 if ((first<0)||(first>=mspecmtx_.NCols())) first=0; 195 if ((last<0)||(last>mspecmtx_.NCols())) last=mspecmtx_.NCols(); 196 if (nband<1) nband=1; 197 } 198 else { 199 first=1; last=mspecmtx_.NCols(); nband=1; 200 } 201 firstfreqms_=first; lastfreqms_=last; nbandms_=nband; 202 char cnom[32]; 203 size_t nchan=mspecmtx_.NRows(); 204 for(int i=0; i<nchan; i++) { 205 for(int j=0; j<nband; j++) { 206 sprintf(cnom,"pow%dc%d",j,i); 207 dtpms_->AddFloatColumn(cnom); 208 } 209 } 210 cout << " ...Number of columns " << (2+nchan*nband) << " doubles -> to FITS file" << dtfile << endl; 211 xntms_=new double[nchan*nband+2]; 172 212 } 173 213 … … 181 221 ibandfirst_=ibandfirst; ibandlast_=ibandlast; 182 222 183 cout << " (JEC):SetNumberOfBands (END) : "223 cout << "BRMeanSpecCalculator::SetNumberOfBands (END) : " 184 224 << numberOfBands_ << " " 185 225 << ibandfirst_ << " " … … 264 304 } 265 305 306 // Pour calcul MeanTimeTag , MeanFrameCounter 307 moyfc_+=curfc_[0]; 308 moytt_+=((double)vpaq_[0].TimeTag()/1.25e8); 309 nbpmoyttfc_++; 266 310 totnbpaq_++; 267 311 return 0; … … 371 415 } 372 416 } 417 mspecmtx_.Info()["ENDTIME"]=getObsTime(); 418 sigspecmtx_.Info()["ENDTIME"]=getObsTime(); 419 if (nbpmoyttfc_>1) { 420 moyfc_/=(double)nbpmoyttfc_; 421 moytt_/=(double)nbpmoyttfc_; 422 } 423 string ikey,ikdesc; 424 ikey="MeanFC"; ikdesc="Mean FrameCounter"; 425 mspecmtx_.Info().SetI(ikey,moyfc_); 426 mspecmtx_.Info().SetComment(ikey,ikdesc); 427 sigspecmtx_.Info().SetI(ikey,moyfc_); 428 sigspecmtx_.Info().SetComment(ikey,ikdesc); 429 430 ikey="MeanTT"; ikdesc="Mean TimeTag"; 431 mspecmtx_.Info().SetD(ikey,moytt_); 432 mspecmtx_.Info().SetComment(ikey,ikdesc); 433 sigspecmtx_.Info().SetD(ikey,moytt_); 434 sigspecmtx_.Info().SetComment(ikey,ikdesc); 435 373 436 char nfile[64]; 374 437 string flnm; … … 390 453 numfile_++; 391 454 455 if (dtpms_!=NULL) FillPwrTmDTable(mspecmtx_); 456 392 457 for(size_t i=0; i<nbpaq4mean_.size(); i++) nbpaq4mean_[i]=0; 393 458 mspecmtx_ = (r_4)(0.); 394 459 sigspecmtx_ = (r_4)(0.); 460 moyfc_=moytt_=0.; 461 nbpmoyttfc_=0; 395 462 return; 396 463 } … … 406 473 fos << spec_window_; 407 474 cout << " SaveSpectraWindow() " << nbtot_specwin_ << "- file " << nfile << " created " << endl; 475 } 476 477 /* --Methode-- */ 478 void BRMeanSpecCalculator::FillPwrTmDTable(TMatrix< r_4 >& specmtx) 479 { 480 if (dtpms_==NULL) return; 481 xntms_[0]=moytt_; 482 xntms_[1]=getObsTimeSeconds(); 483 size_t knt=2; 484 sa_size_t wband=(lastfreqms_-firstfreqms_)/nbandms_; 485 for(sa_size_t ir=0; ir<specmtx.NRows(); ir++) { 486 for(sa_size_t jf=0; jf<specmtx.NCols()-wband; jf+=wband) { 487 TVector<r_4> srow=specmtx.Row(ir); 488 xntms_[knt]=srow.SubVector(Range(jf,jf+wband-1)).Sum(); 489 knt++; 490 } 491 } 492 dtpms_->AddRow(xntms_); 408 493 } 409 494 -
trunk/AddOn/TAcq/brproc.h
r3943 r3993 63 63 inline void SetMaxNbSpecWinFiles(uint_4 nmax=0) { nmaxfiles_specw_=nmax; } 64 64 65 // Pour definir le datatable a remplir - pas de DataTable rempli si pas appele 66 virtual void DefineDataTable(); 65 // Pour definir le datatable (moyenne spectre paquet par paquet) 66 // Le DataTable est rempli par FlagBadPackets - Pas de DataTable rempli si pas appele 67 virtual void DefinePerPaquetDataTable(); 68 69 // Pour definir le datatable puissance spectrale moyennee ou filtree en fonction du temps 70 virtual void DefineTimeAvgPowerDataTable(int first=1, int last=-1, int nband=1); 67 71 68 72 inline void SetVarianceLimits(double vmin=0., double vmax=9.e99) … … 85 89 virtual void SaveMeanSpectra(); // Pour sauver les spectres moyennes ( + sigma ) dans un fichier 86 90 virtual void SaveSpectraWindow(); // Pour sauver les spectres de la fenetre temporel ds un fichier 87 91 virtual void FillPwrTmDTable(TMatrix< r_4 >& specmtx); // pour remplir la puissance spectrale en fonction du temps 88 92 89 93 uint_4 nmean_; // Nombre de spectres pour le calcul des moyennes … … 95 99 uint_8 totnbpaq_; 96 100 97 TMatrix< r_4 > mspecmtx_; // Matrice des spectres moyennees101 TMatrix< r_4 > mspecmtx_; // Matrice des spectres moyennees 98 102 TMatrix< r_4 > sigspecmtx_; // Matrice des sigmas des spectres 103 double moyfc_, moytt_; // FrameCounter/TimeTag moyen pour chaque matrice 104 uint_8 nbpmoyttfc_; // Nombre de TimeTag/FrameCounter somme 99 105 100 106 TArray< r_4 > spec_window_; // fenetre en temps sur les spectres … … 117 123 vector<uint_8> nbadpaq_; 118 124 125 // DataTable for paquet/paquet mean/variance for frequency bands 119 126 FitsInOutFile* ofsdtp_; // Output fits stream for datatable 120 SwFitsDataTable* dtp_; // DataTable127 SwFitsDataTable* dtp_; // per paquet DataTable 121 128 double* xnt_; 129 // DataTable for time averaged spectrum mean per frequency band 130 FitsInOutFile* ofsdtpms_; // Output fits stream for datatable for time averaged spectrum 131 SwFitsDataTable* dtpms_; // DataTable for time averaged spectrum 132 double* xntms_; 133 int firstfreqms_, lastfreqms_, nbandms_; 122 134 }; 123 135 -
trunk/AddOn/TAcq/brprocGain.cc
r3992 r3993 185 185 medfiltspecmtx_.Info()["NPAQSUM"] = nbtot_specwin_; 186 186 medfiltspecmtx_.Info()[buff] = nbtot_specwin_; 187 //JEC timeStamp in the day @ millisec: faudra gerer le passage a minuit!188 medfiltspecmtx_.Info()["TIMEWIN"] = (windowTime_.SecondsPart())*1000.;189 190 191 187 if ( nbtot_specwin_ > 0) { 192 188 medfiltspecmtx_.Row(ir) /= (r_4)nbtot_specwin_; 193 189 } 194 190 }//eo loop on channels 191 //JEC timeStamp in the day @ millisec: faudra gerer le passage a minuit! 192 //Reza : getObsTimeSeconds() fournit le temps ecoule en seconde a partir de 0h00 de la date du premier fichier 193 medfiltspecmtx_.Info()["TIMEWIN"] = (windowTime_.SecondsPart())*1000.; 194 if (nbpmoyttfc_>1) { 195 moyfc_/=(double)nbpmoyttfc_; 196 moytt_/=(double)nbpmoyttfc_; 197 } 198 string ikey,ikdesc; 199 ikey="MeanFC"; ikdesc="Mean FrameCounter"; 200 medfiltspecmtx_.Info().SetI(ikey,moyfc_); 201 medfiltspecmtx_.Info().SetComment(ikey,ikdesc); 202 ikey="MeanTT"; ikdesc="Mean TimeTag"; 203 medfiltspecmtx_.Info().SetD(ikey,moytt_); 204 medfiltspecmtx_.Info().SetComment(ikey,ikdesc); 205 195 206 char nfile[64]; 196 207 string flnm; … … 206 217 //increment the file index 207 218 nummedianfile_++; 219 220 if (dtpms_!=NULL) FillPwrTmDTable(mspecmtx_); 208 221 209 222 //reset the matirx 210 223 medfiltspecmtx_ = (r_4)(0.); 211 212 224 //reset counter 213 225 nbtot_specwin_ = 0; 226 moyfc_=moytt_=0.; 227 nbpmoyttfc_=0; 214 228 215 229 return; -
trunk/AddOn/TAcq/brviscalc.cc
r3967 r3993 165 165 int BRVisibilityCalculator::SelectFreqBinning(uint_4 freq1, uint_4 freq2, uint_4 nbfreq) 166 166 { 167 if (freq2<freq1) { 168 freq1=0; freq2=vismtx_.NCols()-1; nbfreq=1; 169 } 167 170 jf1_=freq1; jf2_=freq2; 168 171 if ((jf1_<1)||(jf1_>=vismtx_.NCols())) jf1_=1; -
trunk/AddOn/TAcq/specmfib.cc
r3992 r3993 85 85 //JEC 27/1/11 see below if (par.gainfile_.length()>0) procms.ReadGainFitsFile(par.gainfile_); 86 86 procms.SetPrintLevel(par.prtlevel_,par.prtmodulo_); 87 if (par.fgdt_) procms.DefineDataTable(); 87 if (par.fgdtpaq_) procms.DefinePerPaquetDataTable(); 88 if (par.fgdtms_) procms.DefineTimeAvgPowerDataTable(par.freqmin_,par.freqmax_,par.nbinfreq_); 89 88 90 if(par.fgtimeselect_) procms.SetProcTimeWindow(par.proctimestart_,par.proctimeend_); 89 91 … … 99 101 if (par.medhalfwidth_>0) procgain_p->SetMedianFilterHalfWidth(par.medhalfwidth_); 100 102 } 103 if (par.fgdtpaq_) procgain_p->DefinePerPaquetDataTable(); 104 if (par.fgdtms_) procgain_p->DefineTimeAvgPowerDataTable(par.freqmin_,par.freqmax_,par.nbinfreq_); 101 105 if(par.fgtimeselect_) procgain_p->SetProcTimeWindow(par.proctimestart_,par.proctimeend_); 102 106 }
Note:
See TracChangeset
for help on using the changeset viewer.