Changeset 3692 in Sophya for trunk/AddOn
- Timestamp:
- Nov 29, 2009, 11:54:32 PM (16 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/branap.cc
r3688 r3692 34 34 int ka=1; 35 35 while (ka<(narg-1)) { 36 cout << " *DBG ka=" << ka << " narg=" << narg << " arg[ka]=" << arg[ka] << endl;37 36 if (strcmp(arg[ka],"-act")==0) { 38 37 action_=arg[ka+1]; -
trunk/AddOn/TAcq/brproc.cc
r3689 r3692 34 34 uint_4 freq1, uint_4 freq2, uint_4 nbfreq) 35 35 : BRBaseProcessor(memgr), outpath_(outpath), nmean_(nmean), numfreq1_(freq1), numfreq2_(freq2), nbinfreq_(nbfreq) 36 { 37 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { 38 vframecount_.push_back(0); 39 vtimetag_.push_back(0); 40 vnpaqm_.push_back(0); 41 } 42 36 // , dtfos_(outpath+"visdt.fits", Fits_Create), visdt_(dtfos_, 1024, true); 37 38 { 43 39 BRPaquet paq(memgr_.PaqSize()); 44 40 45 for(size_t i=0; i<2*memgr_.NbFibres(); i++) 46 for(size_t j=i; j<2*memgr_.NbFibres(); j++) 47 vvis_.push_back( TVector< complex<r_4> >(paq.DataSize()/4) ); 48 49 cout << " BRVisibilityCalculator/Info NMean= " << nmean_ << endl; 50 totnbpaq_ = 0; 41 vismtx_.SetSize((2*memgr_.NbFibres()+1)*memgr_.NbFibres(), paq.DataSize()/4); 42 chanum_.SetSize(vismtx_.NRows()); 43 sa_size_t k=0; 44 for(size_t i=0; i<2*memgr_.NbFibres(); i++) { 45 for(size_t j=i; j<2*memgr_.NbFibres(); j++) { 46 chanum_(k) = (i+1)*100+(j+1); k++; 47 } 48 } 49 // visdt_.AddFloatColumn("mfc"); 50 visdt_.AddFloatColumn("mfc"); 51 visdt_.AddFloatColumn("mtt"); 52 visdt_.AddIntegerColumn("jfreq"); 53 visdt_.AddIntegerColumn("numch"); 54 visdt_.AddFloatColumn("vre"); 55 visdt_.AddFloatColumn("vim"); 56 57 /* 58 char colnm[32]; 59 for(size_t i=0; i<2*memgr_.NbFibres(); i++) { 60 for(size_t j=i; j<2*memgr_.NbFibres(); j++) { 61 sprintf(colnm,"vr_%d_%d",(int)(i+1),(int)j+1); 62 visdt_.AddFloatColumn(colnm); 63 sprintf(colnm,"vi_%d_%d",(int)(i+1),(int)j+1); 64 visdt_.AddFloatColumn(colnm); 65 } 66 } 67 */ 68 if (nmean_ < 1) nmean_=memgr_.NbPaquets(); 69 if (nmean_ < 1) nmean_=1; 70 71 totnbpaq_=0; 72 numfile_=0; 73 moyfc_=moytt_=0.; 74 75 jf1_=numfreq1_; jf2_=numfreq2_; 76 if ((jf1_<1)||(jf1_>=vismtx_.NCols())) jf1_=1; 77 if ((jf2_<1)||(jf2_>=vismtx_.NCols())||(jf2_<jf1_)) jf2_=vismtx_.NCols()-1; 78 if (nbinfreq_<1) nbinfreq_=1; 79 djf_=(jf2_-jf1_)/nbinfreq_; 80 if (djf_<1) djf_=0; 81 xnt_ = new double[vismtx_.NRows()]; 82 for(int kk=0; kk<vismtx_.NRows(); kk++) xnt_[kk]=0.; 83 84 cout << " BRVisibilityCalculator/Info NMean= " << nmean_ << " JF1=" << jf1_ 85 << " JF2=" << jf2_ << " DJF=" << djf_ << endl; 51 86 } 52 87 … … 54 89 BRVisibilityCalculator::~BRVisibilityCalculator() 55 90 { 91 cout << " BRVisibilityCalculator - Visibility Datatable : " << endl; 92 cout << visdt_; 93 POutPersist po(outpath_+"visdt.ppf"); 94 po << visdt_; 95 delete[] xnt_; 56 96 } 57 97 … … 59 99 int BRVisibilityCalculator::Process() 60 100 { 61 /*62 if (totnbpaq_%nmean_ == 0) {63 cout << " BRVisibilityCalculator::Process() " << totnbpaq_ << " FrameCnt=" ;64 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)65 cout << curfc_[fib] << "," ;66 cout << endl;67 cout << " TimeTag (sec) : " ;68 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)69 cout << vpaq_[fib].TimeTag()/125000000 << "," ;70 cout << endl;71 }72 */73 101 vector<TwoByteComplex*> vpdata; 74 vector< TVector< complex<r_4> > > vvis;75 76 102 /* 77 103 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { … … 86 112 vpdata.push_back(vpaq_[fib].Data2C()); 87 113 88 if (totnbpaq_%nmean_ == 0) 89 for(size_t k=0; k<vvis_.size(); k++) vvis_[k] = complex<r_4>((r_4)0.,(r_4)0.); 90 91 for(size_t i=0; i<vvis_.size(); i++) { 92 for(sa_size_t f=1; f<vvis_[i].Size(); f++) { 93 vvis_[i](f) += complex<r_4>((r_4)vpdata[0][f].realB(), (r_4)(r_4)vpdata[0][f].imagB()); 114 if (totnbpaq_%nmean_ == 0) { 115 if (totnbpaq_ > 0) { 116 // ATTENTION : Matrice visibilites non moyennee 117 char nfile[32]; 118 sprintf(nfile,"vismtx%d.ppf",numfile_); 119 string flnm=outpath_+nfile; 120 POutPersist po(flnm); 121 po << vismtx_; 122 cout << numfile_ << "-BRVisibilityCalculator::Process() NPaqProc=" 123 << totnbpaq_ << " -> Visibility Matrix in " << flnm << endl; 124 moyfc_/=nmean_; 125 moytt_/=nmean_; 126 FillVisibTable(moyfc_, moytt_); 127 numfile_++; 94 128 } 95 } 96 129 vismtx_ = complex<r_4>((r_4)0.,(r_4)0.); 130 moyfc_=moytt_=0.; 131 } 132 133 sa_size_t k=0; 134 for(size_t i=0; i<vpdata.size(); i++) { 135 for(size_t j=i; j<vpdata.size(); j++) { 136 TVector< complex<r_4> > vis = vismtx_.Row(k); k++; 137 for(sa_size_t f=1; f<vis.Size(); f++) { 138 vis(f) += complex<r_4>((r_4)vpdata[i][f].realB(), (r_4)vpdata[i][f].imagB()) * 139 complex<r_4>((r_4)vpdata[j][f].realB(), -(r_4)vpdata[j][f].imagB()); 140 } 141 } 142 } 143 144 moyfc_ += curfc_[0]; 145 moytt_ += vpaq_[0].TimeTag(); 97 146 totnbpaq_++; 147 return 0; 148 } 149 150 /* --Methode-- */ 151 int BRVisibilityCalculator::FillVisibTable(double fcm, double ttm) 152 { 153 xnt_[0]=fcm; xnt_[1]=ttm/1.25e8; 154 155 if (djf_<2) { 156 for(sa_size_t rv=0; rv<vismtx_.NRows(); rv++) { 157 for(sa_size_t jf=jf1_; jf<jf2_; jf++) { 158 xnt_[2]=jf; 159 xnt_[3]=chanum_(rv); 160 xnt_[4]=vismtx_(rv,jf).real()/(r_4)(nmean_); 161 xnt_[5]=vismtx_(rv,jf).imag()/(r_4)(nmean_); 162 visdt_.AddRow(xnt_); 163 } 164 } 165 } 166 else { 167 for(sa_size_t rv=0; rv<vismtx_.NRows(); rv++) { 168 for(sa_size_t jf=jf1_; jf<jf2_; jf+=djf_) { 169 r_4 moyreal=0.; 170 r_4 moyimag=0.; 171 for(sa_size_t jjf=jf; jjf<jf+djf_; jjf++) { 172 moyreal+=vismtx_(rv,jf).real(); 173 moyimag+=vismtx_(rv,jf).imag(); 174 } 175 xnt_[2]=jf+djf_/2; 176 xnt_[3]=chanum_(rv); 177 xnt_[4]=moyreal/(r_4)(nmean_*djf_); 178 xnt_[5]=moyimag/(r_4)(nmean_*djf_); 179 visdt_.AddRow(xnt_); 180 } 181 } 182 } 98 183 return 0; 99 184 } -
trunk/AddOn/TAcq/brproc.h
r3690 r3692 32 32 33 33 virtual int Process(); 34 virtual int FillVisibTable(double fcm, double ttm); 35 34 36 protected: 35 37 uint_4 nmean_; // Nombre de spectres pour le calcul des moyennes 36 38 string outpath_; // directory pour fichiers de sortie 37 39 uint_4 numfreq1_,numfreq2_,nbinfreq_; 38 vector<uint_8> vframecount_; 39 vector<uint_8> vtimetag_; 40 vector<uint_8> vnpaqm_; 41 42 vector< TVector< complex<r_4> > > vvis_; 40 uint_4 jf1_,jf2_,djf_; 41 uint_4 numfile_; 42 43 double moyfc_, moytt_; 44 TMatrix< complex<r_4> > vismtx_; 45 TVector< uint_4 > chanum_; 46 // FitsInOutFile dtfos_; 47 DataTable visdt_; 43 48 44 49 uint_4 totnbpaq_; 50 double* xnt_; 45 51 }; 46 52 -
trunk/AddOn/TAcq/tstminifits.cc
r3658 r3692 93 93 } 94 94 mff.setDTypeNaxis(MF_Byte, sx, sy); 95 mff.AddKeyI("CleI_A", 12); 96 mff.AddKeyD("CleD_B", 3.1415, " Valeur de Pi"); 95 97 delete [] data; 96 98 cout << "5/ FIN ecriture tableau ds tmfb.fits " << endl; … … 106 108 uint_1* data = new uint_1[sx*sy]; 107 109 mff.ReadB(data, sx*sy); 110 cout << " ---- mff.GetKey(CleD_B) : " << mff.GetKey("CleD_B") << endl; 111 cout << " ---- mff.GetKey(Non-Existing) : " << mff.GetKey("NonExisting") << endl; 108 112 cout << "7/ FIN lecture depuis tmfb.fits " << endl; 109 113 TArray<int_2> ta(sx, sy);
Note:
See TracChangeset
for help on using the changeset viewer.