Changeset 1464 in Sophya for trunk/ArchTOIPipe/Kernel
- Timestamp:
- Apr 11, 2001, 12:01:44 PM (24 years ago)
- Location:
- trunk/ArchTOIPipe/Kernel
- Files:
-
- 2 added
- 8 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); }
Note:
See TracChangeset
for help on using the changeset viewer.