Changeset 1464 in Sophya for trunk/ArchTOIPipe
- Timestamp:
- Apr 11, 2001, 12:01:44 PM (24 years ago)
- Location:
- trunk/ArchTOIPipe
- Files:
-
- 2 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ArchTOIPipe/Kernel/asciitoiwtr.cc
r1462 r1464 40 40 41 41 double val; 42 int_ 4flg;42 int_8 flg; 43 43 for (int sn = snb; sn <= sne; sn++) { 44 44 s << sn << " "; -
trunk/ArchTOIPipe/Kernel/fitstoiwtr.cc
r1462 r1464 56 56 char** colunits = new (char*[ncols]); 57 57 58 colnames[0] = "sample num";58 colnames[0] = "sampleNum"; 59 59 coltypes[0] = "1D"; 60 60 colunits[0] = "integer"; … … 79 79 cout << " Column[" << j+1 << "] -Flag- Name=" << coln[ck] << endl; 80 80 ck++; 81 coltypes[j+2] = "1 D";82 colunits[j+2] = "Int Flag";81 coltypes[j+2] = "1J"; 82 colunits[j+2] = "Int_8Flag"; 83 83 } 84 84 } … … 102 102 103 103 double* tabdata = new double[ndata]; 104 double* tabflag = new double[ndata]; // ? pas integer?? $CHECK$ - Reza104 long* tabflag = new long[ndata]; // ? pas int_8 ?? $CHECK$ - Reza 105 105 bool* tabck = new bool[ndata]; 106 106 int i; 107 107 for(i=0; i<ndata; i++) { 108 108 tabdata[i] = -9.e19; // $CHECK$ - Reza valeur par defaut ! 109 tabflag[i] = -9.e19;// $CHECK$ - Reza valeur par defaut !109 tabflag[i] = 0; // $CHECK$ - Reza valeur par defaut ! 110 110 tabck[i] = checkInputTOIIndex(i); 111 111 } … … 115 115 // cout << " DBG-A-FitsWriter::run()" << sn << endl; 116 116 try { 117 int_ 4out_flg;117 int_8 out_flg; 118 118 double out_val; 119 119 for (i=0; i<ndata; i++) { … … 133 133 if (outFlags) { 134 134 fits_write_col_dbl(fptr, 2*i+2, fitsLine, 1, 1, tabdata+i, &fstatus); 135 fits_write_col_ dbl(fptr, 2*i+3, fitsLine, 1, 1, tabflag+i, &fstatus);135 fits_write_col_lng(fptr, 2*i+3, fitsLine, 1, 1, tabflag+i, &fstatus); 136 136 } else { 137 137 fits_write_col_dbl(fptr, i+2, fitsLine, 1, 1, tabdata+i, &fstatus); -
trunk/ArchTOIPipe/Kernel/toi.cc
r1462 r1464 9 9 #endif 10 10 11 #define CHKSYNC(ctx)12 // if (((TOIRegularWindow*)this)->data.size() != ((TOIRegularWindow*)this)->flags.size()) \13 // cout << ctx << ((TOIRegularWindow*)this)->data.size() << " " << \14 // ((TOIRegularWindow*)this)->flags.size() << endl; \15 11 16 12 TOI::TOI() { … … 73 69 } 74 70 75 #ifndef NO_SOPHYA 71 /* 72 RZCMV ----- l'interface va etre modifiee, NE PAS UTILISER 73 #ifndef NO_SOPHYA 76 74 Array TOI::getError(int iStart, int iEnd) { 77 75 if (errorTOI == NULL) throw NotFoundExc("TOI::getDataError : no Error TOI"); 78 return errorTOI->getData(iStart, iEnd); 76 return errorTOI->getData(iStart, iEnd); 77 } 78 Array TOI::getData(int iStart, int iEnd) { 79 lock(); 80 Array a = doGetData(iStart, iEnd); 81 unlock(); 82 if (fgsigput) { fgsigput = false; broadcast(); } 83 return a; 84 } 85 TArray<int_4> TOI::getFlag(int iStart, int iEnd) { 86 lock(); 87 TArray<int_4> a = doGetFlag(iStart, iEnd); 88 unlock(); 89 if (fgsigput) { fgsigput = false; broadcast(); } 90 return a; 79 91 } 80 92 #endif 81 82 /*RZCMV 93 l'interface va etre modifiee, NE PAS UTILISER ---- 94 */ 95 96 97 /* 98 RZCMV ------- A revoir les getError() ... 83 99 double TOI::getError(int i) { 84 100 if (errorTOI == NULL) throw NotFoundExc("TOI::getDataError : no Error TOI"); … … 94 110 */ 95 111 96 #ifndef NO_SOPHYA97 Array TOI::getData(int iStart, int iEnd) {98 lock();99 Array a = doGetData(iStart, iEnd);100 unlock();101 if (fgsigput) { fgsigput = false; broadcast(); }102 return a;103 }104 #endif105 106 112 double TOI::getData(int i) { 107 113 lock(); 108 int_ 4flg;114 int_8 flg; 109 115 double dat; 110 116 doGetData(i, dat, flg); … … 114 120 } 115 121 116 void TOI::getData(int i, double &data,int_ 4&flag) {122 void TOI::getData(int i, double &data,int_8 &flag) { 117 123 lock(); 118 124 doGetData(i, data, flag); … … 122 128 } 123 129 124 125 126 #ifndef NO_SOPHYA127 TArray<int_4> TOI::getFlag(int iStart, int iEnd) {128 lock();129 TArray<int_4> a = doGetFlag(iStart, iEnd);130 unlock();131 if (fgsigput) { fgsigput = false; broadcast(); }132 return a;133 }134 #endif135 136 130 137 138 139 void TOI::putData(int i, double value, int_4 flag) { 131 132 void TOI::putData(int i, double value, int_8 flag) { 140 133 lock(); 141 134 doPutData(i, value, flag); … … 208 201 209 202 210 TOIRegularWindow::TOIRegularWindow() {211 i0 = -1;212 }213 214 TOIRegularWindow::TOIRegularWindow(string nm) {215 i0 = -1;216 setName(nm);217 }218 219 TOIRegularWindow::~TOIRegularWindow() {220 }221 222 TOI::DataStatus TOIRegularWindow::isDataAvailNL(int iStart, int iEnd) {223 if (iEnd >= i0 + (long)data.size()) return DATA_NOT_YET;224 if (iStart < i0) return DATA_DELETED;225 return DATA_OK;226 }227 228 TOI::DataStatus TOIRegularWindow::isDataAvailNL(int i) {229 return TOI::isDataAvailNL(i);230 }231 232 void TOIRegularWindow::doWontNeedBefore(int i) {233 if (i>= i0 + (long)data.size())234 i = i0 + (long)data.size() - 1;235 if (i>i0) { // don't empty list236 int osz = data.size();237 data.erase(data.begin(), data.begin()+(i-i0));238 flags.erase(flags.begin(), flags.begin()+(i-i0));239 i0 = i;240 }241 }242 243 244 #ifndef NO_SOPHYA245 Array TOIRegularWindow::doGetData(int iStart, int iEnd) {246 if (!isDataAvailNL(iStart, iEnd)) {247 throw RangeCheckError("TOI::getData : data not available");248 }249 Array dat(iEnd - iStart + 1);250 long j0 = iStart - i0;251 for (int i=0; i<iEnd-iStart+1; i++) {252 dat[i] = data[i+j0];253 }254 return dat;255 }256 #endif257 258 void TOIRegularWindow::doGetData(int i, double & val, int_4 & flg) {259 if (isDataAvailNL(i) != DATA_OK) {260 cerr << "TOI::getData : data not available " << i << endl;261 throw RangeCheckError("TOI::getData : data not available");262 }263 264 val = data[i - i0];265 flg = flags[i - i0];266 267 }268 269 270 #ifndef NO_SOPHYA271 TArray<int_4> TOIRegularWindow::doGetFlag(int iStart, int iEnd) {272 if (isDataAvailNL(iStart, iEnd) != DATA_OK) throw RangeCheckError("TOI::getData : data not available");273 TArray<int_4> dat(iEnd - iStart + 1);274 long j0 = iStart - i0;275 for (int i=0; i<iEnd-iStart+1; i++) {276 dat[i] = flags[i+j0];277 }278 return dat;279 }280 #endif281 282 /*RZCMV283 int_4 TOIRegularWindow::doGetFlag(int i) {284 if (isDataAvailNL(i) != DATA_OK) {285 cerr << "TOI::getFlag : data not available " << i << endl;286 throw RangeCheckError("TOI::getFlag : data not available");287 }288 return flags[i - i0];289 }290 */291 292 293 void TOIRegularWindow::doPutData(int i, double value, int_4 flag) {294 if (i0 == -1) {295 data.insert(data.begin(), 1, defaultValue);296 flags.insert(flags.begin(), 1, 0);297 i0 = i;298 } else if (i<i0) {299 data.insert(data.begin(), i0-i, defaultValue);300 flags.insert(flags.begin(), i0-i, 0);301 i0 = i;302 } else if (i>=i0+(int)data.size()) {303 data.insert(data.end(), (long) (i-(i0+data.size())+1), defaultValue);304 flags.insert(flags.end(), (long) (i-(i0+flags.size())+1), 0);305 }306 data[i-i0] = value;307 flags[i-i0] = flag;308 }309 310 bool TOIRegularWindow::hasSomeData() {311 lock();312 bool x = !data.empty();313 unlock();314 return x;315 }316 317 int TOIRegularWindow::nextDataAvail(int iAfter) {318 lock();319 if (iAfter >= i0 + (long)data.size()) {unlock(); return -1;}320 if (iAfter < i0) {unlock(); return i0;}321 unlock();322 return iAfter+1;323 }324 325 /* A faire, le nettoyage (heuristique selon demandes ?, guide ? ) */326 327 -
trunk/ArchTOIPipe/Kernel/toi.h
r1462 r1464 6 6 7 7 #include <pthread.h> 8 #include <vector>9 using namespace std;10 8 11 9 #ifdef WITH_SOPHYA … … 31 29 // Fin rajouts Reza 12/3/2001 ------ 32 30 31 33 32 #ifdef WITH_SOPHYA 34 / /l'interface va etre modifiee, NE PAS UTILISER33 /* l'interface va etre modifiee, NE PAS UTILISER 35 34 virtual Array getData(int iStart, int iEnd); 36 35 virtual Array getError(int iStart, int iEnd); 37 36 virtual TArray<int_4> getFlag(int iStart, int iEnd); 38 // l'interface va etre modifiee, NE PAS UTILISER37 l'interface va etre modifiee, NE PAS UTILISER */ 39 38 #endif 40 39 … … 42 41 43 42 virtual double getData(int i); 44 virtual void getData(int i,double &data,int_ 4&flag);43 virtual void getData(int i,double &data,int_8 &flag); 45 44 //RZCMV virtual DataStatus getDataError(int i,double &data,double &error,int_4 &flag); 46 45 … … 53 52 virtual bool hasSomeData()=0; 54 53 55 virtual void putData(int i, double value, int_ 4flag=0);54 virtual void putData(int i, double value, int_8 flag=0); 56 55 //RZCMV virtual void putDataError(int i, double value, 57 56 // double error, int_4 flag=0); … … 82 81 83 82 #ifdef WITH_SOPHYA 83 /* l'interface va etre modifiee, NE PAS UTILISER 84 84 virtual Array doGetData(int iStart, int iEnd)=0; 85 85 virtual TArray<int_4> doGetFlag(int iStart, int iEnd)=0; 86 l'interface va etre modifiee, NE PAS UTILISER */ 86 87 #endif 87 virtual void doGetData(int i, double& data, int_4& flag)=0; 88 virtual void doPutData(int i, double value, int_4 flag=0)=0; 88 89 virtual void doGetData(int i, double& data, int_8& flag)=0; 90 virtual void doPutData(int i, double value, int_8 flag=0)=0; 89 91 virtual void doWontNeedBefore(int i); 90 92 … … 135 137 }; 136 138 137 // Classe de TOI avec une fenetre glissante, et echantillonnage regulier.138 // Pour le moment au moins,139 // il faut que les providers fassent arriver les donnees par samplenum croissant.140 class TOIRegularWindow : public TOIRegular {141 public:142 TOIRegularWindow();143 TOIRegularWindow(string nm);144 virtual ~TOIRegularWindow();145 146 virtual DataStatus isDataAvailNL(int iStart, int iEnd);147 virtual DataStatus isDataAvailNL(int i); // override required148 149 150 //protected:151 vector<double> data;152 vector<int_4> flags;153 long i0;154 double defaultValue;155 156 #ifdef WITH_SOPHYA157 virtual Array doGetData(int iStart, int iEnd);158 virtual TArray<int_4> doGetFlag(int iStart, int iEnd);159 #endif160 virtual void doGetData(int i, double & val, int_4 & flg);161 162 virtual void doPutData(int i, double value, int_4 flag=0);163 virtual void doWontNeedBefore(int i);164 165 virtual int nextDataAvail(int iAfter);166 virtual bool hasSomeData();167 };168 139 169 140 #endif -
trunk/ArchTOIPipe/Kernel/toiprocessor.cc
r1462 r1464 259 259 260 260 #ifndef NO_SOPHYA 261 /* ---- l'interface va etre modifiee, NE PAS UTILISER 261 262 Array TOIProcessor::getData(int toiIndex, int iStart, int iEnd) { 262 263 TOI* toi = getInputTOI(toiIndex); … … 276 277 return toi->getFlag(iStart, iEnd); 277 278 } 279 l'interface va etre modifiee, NE PAS UTILISER ---- */ 278 280 #endif 279 281 … … 284 286 } 285 287 286 void TOIProcessor::getData(int toiIndex, int i, double &data,int_ 4&flag)288 void TOIProcessor::getData(int toiIndex, int i, double &data,int_8 &flag) 287 289 { 288 290 TOI* toi = getInputTOI(toiIndex); … … 337 339 338 340 339 void TOIProcessor::putData(int toiIndex, int i, double value, int_ 4flg) {341 void TOIProcessor::putData(int toiIndex, int i, double value, int_8 flg) { 340 342 TOI* toi = getOutputTOI(toiIndex); 341 343 toi->putData(i, value, flg); -
trunk/ArchTOIPipe/Kernel/toiprocessor.h
r1462 r1464 43 43 protected: 44 44 #ifndef NO_SOPHYA 45 /* ---- l'interface va etre modifiee, NE PAS UTILISER 45 46 Array getData(int toiIndex, int iStart, int iEnd); 46 47 Array getError(int toiIndex, int iStart, int iEnd); 47 48 TArray<int_4> getFlag(int toiIndex, int iStart, int iEnd); 49 l'interface va etre modifiee, NE PAS UTILISER ---- */ 48 50 #endif 49 51 // si multiple input (indexed input), tableau 2D. … … 52 54 // utilisees que sur des entrees simples 53 55 double getData(int toiIndex, int i); 54 void getData(int toiIndex, int i, double &data,int_ 4&flag);56 void getData(int toiIndex, int i, double &data,int_8 &flag); 55 57 56 58 //RZCMV double getError(int toiIndex, int i); … … 61 63 void setNeededHistory(int nsamples); // -1 : disable 62 64 63 void putData(int toiIndex, int i, double value, int_ 4flag=0);65 void putData(int toiIndex, int i, double value, int_8 flag=0); 64 66 //RZCMV void putDataError(int toiIndex, int i, double value, 65 67 //RZCMV double error, int_4 flag=0); -
trunk/ArchTOIPipe/Kernel/toiseqbuff.cc
r1462 r1464 30 30 buffsize = 2*wsz; 31 31 data = new double[buffsize]; 32 flags = new int_ 4[buffsize];32 flags = new int_8[buffsize]; 33 33 for(int k=0; k<buffsize; k++) { 34 34 data[k] = defaultValue; … … 77 77 78 78 #ifndef NO_SOPHYA 79 /* ---- l'interface va etre modifiee, NE PAS UTILISER 79 80 Array TOISeqBuffered::doGetData(int iStart, int iEnd) { 80 81 // if (iEnd < iStart) … … 94 95 return dat; 95 96 } 97 l'interface va etre modifiee, NE PAS UTILISER ---- */ 96 98 #endif 97 99 98 void TOISeqBuffered::doGetData(int i, double & val, int_ 4& flg) {100 void TOISeqBuffered::doGetData(int i, double & val, int_8 & flg) { 99 101 if (!started) { 100 102 cout << " TOISeqBuffered::doGetData() - waitGet() Waiting for start ... " << endl; … … 137 139 138 140 #ifndef NO_SOPHYA 141 /* ---- l'interface va etre modifiee, NE PAS UTILISER 139 142 TArray<int_4> TOISeqBuffered::doGetFlag(int iStart, int iEnd) { 140 143 if (!started) waitGet(); … … 148 151 return dat; 149 152 } 153 l'interface va etre modifiee, NE PAS UTILISER ---- */ 150 154 #endif 151 155 … … 163 167 164 168 165 void TOISeqBuffered::doPutData(int i, double value, int_ 4flag) {169 void TOISeqBuffered::doPutData(int i, double value, int_8 flag) { 166 170 if (!started) { 167 171 first_in = next_in = i; … … 217 221 } 218 222 219 /* A faire, le nettoyage (heuristique selon demandes ?, guide ? ) */220 223 221 224 -
trunk/ArchTOIPipe/Kernel/toiseqbuff.h
r1462 r1464 30 30 protected: 31 31 double* data; 32 int_ 4* flags;32 int_8* flags; 33 33 int wsize; 34 34 int buffsize; … … 44 44 45 45 #ifdef WITH_SOPHYA 46 /* ---- l'interface va etre modifiee, NE PAS UTILISER 46 47 virtual Array doGetData(int iStart, int iEnd); 47 48 virtual TArray<int_4> doGetFlag(int iStart, int iEnd); 49 l'interface va etre modifiee, NE PAS UTILISER ---- */ 48 50 #endif 49 virtual void doGetData(int i, double & val, int_ 4& flg);51 virtual void doGetData(int i, double & val, int_8 & flg); 50 52 51 virtual void doPutData(int i, double value, int_ 4flag=0);53 virtual void doPutData(int i, double value, int_8 flag=0); 52 54 virtual void doWontNeedBefore(int i); 53 55 … … 56 58 57 59 inline double & dataRef(int i) { return data[i%buffsize]; } 58 inline int_ 4& flagRef(int i) { return flags[i%buffsize]; }60 inline int_8 & flagRef(int i) { return flags[i%buffsize]; } 59 61 inline bool isDataDeleted(int i) 60 62 { return((i < next_in-buffsize-1) ? true : false); } -
trunk/ArchTOIPipe/ProcWSophya/simtoipr.cc
r1462 r1464 91 91 TVector<int_8> vfg(wsize); 92 92 int k; 93 for(k=0; k<wsize; k++) { 94 vin(k) = getData(0, k+snb); 95 vfg(k) = getFlag(0, k+snb); 96 } 93 for(k=0; k<wsize; k++) 94 getData(0, k+snb, vin(k), vfg(k)); 95 97 96 double s = vin.Sum(); 98 97 double mean = s/wsize; … … 123 122 if (k>=wsize) { 124 123 valsub = vin(k%wsize); 125 vin(k%wsize) = valadd = getData(0, k+snb);126 v fg(k%wsize) = getFlag(0, k+snb);124 getData(0, k+snb, vin(k%wsize), vfg(k%wsize)); 125 valadd = vin(k%wsize); 127 126 if ( (valadd < range_min) || (valadd > range_max) ) 128 127 valadd = mean; … … 359 358 TVector<int_8> vfg(wsize); 360 359 int k; 361 for(k=0; k<wsize; k++) { 362 vin(k%wsize) = getData(0, k+snb); 363 vfg(k%wsize) = getFlag(0, k+snb); 364 } 360 for(k=0; k<wsize; k++) 361 getData(0, k+snb, vin(k%wsize), vfg(k%wsize)); 362 365 363 double mean = vin.Sum()/wsize; 366 364 for(k=wsz2+1; k<wsize; k++) { … … 380 378 putData(1, k+snb, vin(k%wsize), vfg(k%wsize)); 381 379 knext = k+wsz2+1; 382 if (knext<=(sne-snb)) { 383 vin(knext%wsize) = getData(0, knext+snb); 384 vfg(knext%wsize) = getFlag(0, knext+snb); 385 } 380 if (knext<=(sne-snb)) 381 getData(0, knext+snb, vin(knext%wsize), vfg(knext%wsize)); 382 386 383 else { 387 384 if (!fgfin) { … … 489 486 int k,i; 490 487 double out = 0.; 491 unsigned long fgout = 0; 488 double valin = 0.; 489 int_8 fgin = 0; 490 int_8 fgout = 0; 492 491 for(k=snb;k<=sne;k++) { 493 492 out = 0; 494 493 fgout = 0; 495 494 for(i=0; i<nb_input; i++) { 496 out += gains(i)*getData(i, k); 497 fgout = fgout | (unsigned int)getFlag(i,k); 495 getData(i, k, valin, fgin); 496 out += gains(i)*valin; 497 fgout = fgout | fgin; 498 498 } 499 499 putData(0,k,out,fgout); -
trunk/ArchTOIPipe/SMakefile
r1462 r1464 1 # USERFLAGS = -I$(EXTLIBDIR)/Include/FitsIO -DWITH_SOPHYA 2 USERFLAGS = -I$(EXTLIBDIR)/Include/FitsIO 1 USERFLAGS = -I$(EXTLIBDIR)/Include/FitsIO -DWITH_SOPHYA 3 2 include $(DPCBASEREP)/Include/MakefileUser.h 4 3 … … 13 12 LIBOLIST := $(AOBJ)asciitoiwtr.o $(AOBJ)fitstoirdr.o $(AOBJ)fitstoiwtr.o \ 14 13 $(AOBJ)toi.o $(AOBJ)toimanager.o $(AOBJ)toiprocessor.o \ 15 $(AOBJ)toisqfilter.o $(AOBJ)toi seqbuff.o $(AOBJ)simtoipr.o \16 $(AOBJ) map2toi.o $(AOBJ)toi2map.o14 $(AOBJ)toisqfilter.o $(AOBJ)toiregwindow.o $(AOBJ)toiseqbuff.o \ 15 $(AOBJ)simtoipr.o $(AOBJ)map2toi.o $(AOBJ)toi2map.o 17 16 EXEOLIST := $(AOBJ)fits2asc.o $(AOBJ)tsttoi.o $(AOBJ)tsttoi2.o $(AOBJ)simtst.o \ 18 17 $(AOBJ)tstrztoi.o $(AOBJ)rztoi.o \ … … 22 21 23 22 INCLIST := asciitoiwtr.h fitstoirdr.h fitstoiwtr.h toi.h config.h conf.h \ 24 toiprocessor.h toimanager.h toiseqbuff.h simtoipr.h map2toi.h toi2map.h 23 toiprocessor.h toimanager.h toiseqbuff.h toiregwindow.h \ 24 simtoipr.h map2toi.h toi2map.h 25 25 26 26 all : $(EXELIST) … … 77 77 $(AOBJ)toiseqbuff.o: toiseqbuff.cc toiprocessor.h config.h conf.h toi.h \ 78 78 toiseqbuff.h 79 $(AOBJ)toiregwindow.o: toiregwindow.cc toiprocessor.h config.h conf.h toi.h \ 80 toiregwindow.h 79 81 $(AOBJ)simtoipr.o: simtoipr.cc toiprocessor.h config.h conf.h toi.h \ 80 82 simtoipr.h -
trunk/ArchTOIPipe/TestPipes/fits2asc.cc
r1462 r1464 1 1 #include "machdefs.h" 2 2 #include "toi.h" 3 #include "toiregwindow.h" 3 4 #include "toiprocessor.h" 4 5 #include "toimanager.h" -
trunk/ArchTOIPipe/TestPipes/tstrztoi.cc
r1462 r1464 11 11 #include "rztoi.h" 12 12 #include "toiseqbuff.h" 13 #include "toiregwindow.h" 13 14 #include "timing.h" 14 15 #include "sambainit.h" -
trunk/ArchTOIPipe/TestPipes/tsttoi.cc
r1437 r1464 1 1 #include "toi.h" 2 #include "toiregwindow.h" 2 3 #include "toiprocessor.h" 3 4 #include "fitstoirdr.h" -
trunk/ArchTOIPipe/TestPipes/tsttoi2.cc
r1437 r1464 1 1 #include "toi.h" 2 #include "toiregwindow.h" 2 3 #include "toiprocessor.h" 3 4 #include "fitstoirdr.h"
Note:
See TracChangeset
for help on using the changeset viewer.