Changeset 1012 in Sophya
- Timestamp:
- May 19, 2000, 8:57:58 AM (25 years ago)
- Location:
- trunk/SophyaLib/HiStats
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/xntuple.cc
r1009 r1012 46 46 idata(NULL), sdata(NULL) 47 47 { 48 if(ndvar) ddata = new double[ndvar*sz] ;49 if(nfvar) fdata = new float[nfvar*sz] ;48 if(ndvar) ddata = new r_8[ndvar*sz] ; 49 if(nfvar) fdata = new r_4[nfvar*sz] ; 50 50 if(nivar) idata = new int_4[nivar*sz] ; 51 51 if(nsvar) sdata = new char[nsvar*(strsz+1)*sz] ; … … 80 80 81 81 if(mD) { 82 blk->ddata = new double[mD*mBlkSz] ;83 fread(blk->ddata, sizeof( double), mD*mBlkSz, swf) ;82 blk->ddata = new r_8[mD*mBlkSz] ; 83 fread(blk->ddata, sizeof(r_8), mD*mBlkSz, swf) ; 84 84 } 85 85 if(mF) { 86 blk->fdata = new float[mF*mBlkSz] ;87 fread(blk->fdata, sizeof( float), mF*mBlkSz, swf) ;86 blk->fdata = new r_4[mF*mBlkSz] ; 87 fread(blk->fdata, sizeof(r_4), mF*mBlkSz, swf) ; 88 88 } 89 89 if(mI) { 90 90 blk->idata = new int_4[mI*mBlkSz] ; 91 fread(blk->idata, sizeof(int ), mI*mBlkSz, swf) ;91 fread(blk->idata, sizeof(int_4), mI*mBlkSz, swf) ; 92 92 } 93 93 if(mS) { … … 111 111 mktemp(swf_name) ; 112 112 swf = fopen(swf_name, "w+") ; 113 if(!swf) THROW(fileErr) ;113 if(!swf) throw IOExc("XNTuple::swap() - Error opening swap File"); 114 114 } 115 115 … … 152 152 // position debut du bloc 153 153 blk->swoff = ftell(swf) ; 154 if(blk->ddata) fwrite(blk->ddata, sizeof( double), mD*mBlkSz, swf) ;155 if(blk->fdata) fwrite(blk->fdata, sizeof( float), mF*mBlkSz, swf) ;156 if(blk->idata) fwrite(blk->idata, sizeof(int ),mI*mBlkSz, swf) ;154 if(blk->ddata) fwrite(blk->ddata, sizeof(r_8), mD*mBlkSz, swf) ; 155 if(blk->fdata) fwrite(blk->fdata, sizeof(r_4), mF*mBlkSz, swf) ; 156 if(blk->idata) fwrite(blk->idata, sizeof(int_4), mI*mBlkSz, swf) ; 157 157 if(blk->sdata) fwrite(blk->sdata, sizeof(char), mS*mBlkSz*(mStrSz+1), swf) ; 158 158 } … … 198 198 // XNTuple(int ndvar, int nfvar, int nivar, int nsvar, char** vnames, - 199 199 // int blk=512, int maxblk=100, int strsz=30) 200 // Constructeur - Création d'un XNTuple de "ndvar" variables de type " double", -201 // "nfvar" de type " float", "nivar" de type "int" et "nsvar" de type -200 // Constructeur - Création d'un XNTuple de "ndvar" variables de type "r_8", - 201 // "nfvar" de type "r_4", "nivar" de type "int" et "nsvar" de type - 202 202 // "char*". 203 203 //| * "blk" = taille blocs de données (en nombre d'entrées) … … 323 323 //-- 324 324 //++ 325 // void Fill( double* d_data, float* f_data, int* i_data, char** s_data)325 // void Fill(r_8* d_data, r_4* f_data, int* i_data, char** s_data) 326 326 // Remplissage d'une ligne dans le NTuple 327 327 // void Show(ostream& os) const 328 // Impression de la liste des variables avec min-max sur le flot "o ß328 // Impression de la liste des variables avec min-max sur le flot "os" 329 329 // void Show() const 330 330 // Identique à "Show(cout)" … … 332 332 // Opérateur égal (=) , copie "nt" dans le premier NTuple 333 333 //-- 334 void XNTuple::Fill( double* d_data, float* f_data, long* i_data, char** s_data)334 void XNTuple::Fill(r_8* d_data, r_4* f_data, int_4* i_data, char** s_data) 335 335 { 336 336 // place disponible dans bloc courant ? … … 343 343 mI && !ptr[mBlk]->idata || 344 344 mS && !ptr[mBlk]->sdata ) 345 THROW(parmErr) ; 346 347 doublex ;345 throw ParmError("XNTuple::Fill(...) Missing (NULL) argument "); 346 347 r_8 x ; 348 348 // copie variables et update mMin, mMax 349 349 if(mD) { 350 memcpy(ptr[mBlk]->ddata+mOff*mD, d_data, mD*sizeof( double)) ;350 memcpy(ptr[mBlk]->ddata+mOff*mD, d_data, mD*sizeof(r_8)) ; 351 351 for(int i = 0 ; i < mD ; i++) { 352 352 x = d_data[i] ; … … 357 357 358 358 if(mF) { 359 memcpy(ptr[mBlk]->fdata+mOff*mF, f_data, mF*sizeof( float)) ;359 memcpy(ptr[mBlk]->fdata+mOff*mF, f_data, mF*sizeof(r_4)) ; 360 360 for(int i = 0 ; i < mF ; i++) { 361 361 x = f_data[i] ; … … 366 366 367 367 if(mI) { 368 memcpy(ptr[mBlk]->idata+mOff*mI, i_data, mI*sizeof( long)) ;368 memcpy(ptr[mBlk]->idata+mOff*mI, i_data, mI*sizeof(int_4)) ; 369 369 for(int i = 0 ; i < mI ; i++) { 370 370 x = i_data[i] ; … … 402 402 // 403 403 // 404 doubleXNTuple::GetDVal(int i, int k) const404 r_8 XNTuple::GetDVal(int i, int k) const 405 405 { 406 406 if( i<0 || i>=mNEnt || k<0 || k>=mD ) 407 THROW(rangeCheckErr) ; 407 throw RangeCheckError("XNTuple::GetDVal() Invalid line/column index"); 408 408 409 409 // Bloc ? … … 419 419 // 420 420 // 421 floatXNTuple::GetFVal(int i, int k) const421 r_4 XNTuple::GetFVal(int i, int k) const 422 422 { 423 423 if( i<0 || i>=mNEnt || k<mD || k>=(mD+mF) ) 424 THROW(rangeCheckErr) ; 424 throw RangeCheckError("XNTuple::GetFVal() Invalid line/column index"); 425 425 k -= mD ; 426 426 … … 437 437 // 438 438 // 439 longXNTuple::GetIVal(int i, int k) const439 int_4 XNTuple::GetIVal(int i, int k) const 440 440 { 441 441 if( i<0 || i>=mNEnt || k<(mD+mF) || k>=(mD+mF+mI) ) 442 THROW(rangeCheckErr) ; 442 throw RangeCheckError("XNTuple::GetIVal() Invalid line/column index"); 443 443 444 k -= (mD+mF) ; 444 445 … … 459 460 { 460 461 if( i<0 || i>=mNEnt || k<(mD+mF+mI) || k>=(mD+mF+mI+mS) ) 461 THROW(rangeCheckErr) ; 462 throw RangeCheckError("XNTuple::GetSVal() Invalid line/column index"); 463 462 464 k -= (mD+mF+mI) ; 463 465 … … 500 502 if(mNVars) { 501 503 mNames = new char[mNVars*(LENNAME+1)] ; 502 mVarD = new double[mNVars];504 mVarD = new r_8[mNVars]; 503 505 memcpy(mNames, nt.mNames, mNVars*(LENNAME+1)*sizeof(char)) ; 504 506 } 505 507 // MinMax 506 508 if(nt.mMin) { 507 mMin = new double[(mD+mF+mI)] ;508 memcpy(mMin, nt.mMin, (mD+mF+mI)*sizeof( double)) ;509 mMin = new r_8[(mD+mF+mI)] ; 510 memcpy(mMin, nt.mMin, (mD+mF+mI)*sizeof(r_8)) ; 509 511 } 510 512 if(nt.mMax) { 511 mMax = new double[(mD+mF+mI)] ;512 memcpy(mMax, nt.mMax, (mD+mF+mI)*sizeof( double)) ;513 mMax = new r_8[(mD+mF+mI)] ; 514 memcpy(mMax, nt.mMax, (mD+mF+mI)*sizeof(r_8)) ; 513 515 } 514 516 … … 521 523 if(nt.ptr[i]->sw) nt.read_blk(nt.ptr[i]) ; 522 524 if(mD) 523 memcpy(ptr[i]->ddata, nt.ptr[i]->ddata, mD*mBlkSz*sizeof( double)) ;525 memcpy(ptr[i]->ddata, nt.ptr[i]->ddata, mD*mBlkSz*sizeof(r_8)) ; 524 526 if(mF) 525 memcpy(ptr[i]->fdata, nt.ptr[i]->fdata, mF*mBlkSz*sizeof( float)) ;527 memcpy(ptr[i]->fdata, nt.ptr[i]->fdata, mF*mBlkSz*sizeof(r_4)) ; 526 528 if(mI) 527 memcpy(ptr[i]->idata, nt.ptr[i]->idata, mF*mBlkSz*sizeof(int )) ;529 memcpy(ptr[i]->idata, nt.ptr[i]->idata, mF*mBlkSz*sizeof(int_4)) ; 528 530 if(mS) 529 531 memcpy(ptr[i]->sdata, nt.ptr[i]->sdata, mS*mBlkSz*sizeof(char)*(mStrSz+1)) ; … … 597 599 os << buff ; 598 600 599 doublemin, max ;601 r_8 min, max ; 600 602 int i; 601 603 for(i = 0 ; i < mD ; i++) { … … 625 627 } 626 628 627 int XNTuple::FillFromASCIIFile(string const& fn, double ddval, floatdfval,629 int XNTuple::FillFromASCIIFile(string const& fn, r_8 ddval, r_4 dfval, 628 630 int dival, const char * dsval) 629 631 // Remplit le ntuple a partir d'un fichier ASCII. … … 664 666 mVarD[i] = GetDVal(n, i) ; 665 667 for(i = 0 ; i < mF ; i++) 666 mVarD[i+mD] = ( double)GetFVal(n, i+mD) ;668 mVarD[i+mD] = (r_8)GetFVal(n, i+mD) ; 667 669 for(i = 0 ; i < mI ; i++) 668 mVarD[i+mD+mF] = ( double)GetIVal(n, i+mD+mF) ;670 mVarD[i+mD+mF] = (r_8)GetIVal(n, i+mD+mF) ; 669 671 for(i = 0 ; i < mS ; i++) 670 672 mVarD[i+mD+mF+mI] = atof(GetSVal(n, i+mD+mF+mI).c_str()) ; … … 743 745 { 744 746 string rets = "" ; 745 rets += "/* doubletype variables */ \n";746 // variables double747 rets += "/* r_8 type variables */ \n"; 748 // variables r_8 747 749 int i; 748 750 for(i = 0 ; i < mD ; i++) { … … 754 756 if(mD) rets += ";" ; 755 757 756 // variables float757 rets += "/* floattype variables */ \n";758 // variables r_4 759 rets += "/* r_4 type variables */ \n"; 758 760 for(i = 0 ; i < mF ; i++) { 759 761 if( i>0 && (i%5)==0 ) rets += ";" ; … … 813 815 { 814 816 char buff[32]; 815 double* val;817 r_8* val; 816 818 val = GetLineD(n); 817 819 sprintf(buff,"%6d: ",n); … … 907 909 // Noms 908 910 dobj->mNames = new char[dobj->mNVars*(LENNAME+1)] ; 909 dobj->mVarD = new double[dobj->mNVars];911 dobj->mVarD = new r_8[dobj->mNVars]; 910 912 ppin.GetBytes(dobj->mNames, dobj->mNVars*(LENNAME+1)) ; 911 913 … … 931 933 // (protected) 932 934 // 933 void XNTuple::SetDVal(int i, int k, doublev)934 { 935 if( i<0 || i>=mNEnt || k<0 || k>=mD ) 936 THROW(rangeCheckErr) ; 935 void XNTuple::SetDVal(int i, int k, r_8 v) 936 { 937 if( i<0 || i>=mNEnt || k<0 || k>=mD ) 938 throw RangeCheckError("XNTuple::SetDVal() Invalid line/column index"); 937 939 938 940 // Bloc ? … … 944 946 ptr[blk]->ddata[off*mD+k]=v ; 945 947 } 946 void XNTuple::SetFVal(int i, int k, float v) 948 949 void XNTuple::SetFVal(int i, int k, r_4 v) 947 950 { 948 951 if( i<0 || i>=mNEnt || k<mD || k>=(mD+mF) ) 949 THROW(rangeCheckErr) ; 952 throw RangeCheckError("XNTuple::SetFVal() Invalid line/column index"); 953 950 954 k -= mD ; 951 955 … … 961 965 { 962 966 if( i<0 || i>=mNEnt || k<(mD+mF) || k>=(mD+mF+mI) ) 963 THROW(rangeCheckErr) ; 967 throw RangeCheckError("XNTuple::SetIVal() Invalid line/column index"); 968 964 969 k -= (mD+mF) ; 965 970 … … 976 981 { 977 982 if( i<0 || i>=mNEnt || k<(mD+mF+mI) || k>=(mD+mF+mI+mS) ) 978 THROW(rangeCheckErr) ; 983 throw RangeCheckError("XNTuple::SetSVal() Invalid line/column index"); 984 979 985 k -= (mD+mF+mI) ; 980 986 -
trunk/SophyaLib/HiStats/xntuple.h
r1009 r1012 10 10 #define XNTUPLE_H_SEEN 11 11 12 #include " objfio.h"12 #include "machdefs.h" 13 13 14 14 #include <string.h> … … 20 20 #include "ppersist.h" 21 21 #include "dvlist.h" 22 #include "objfio.h" 22 23 23 24 … … 35 36 int sw ; // swappe ? 36 37 long int swoff ; // offset dans fichier de swap 37 float*fdata ;38 double*ddata ;38 r_4* fdata ; 39 r_8* ddata ; 39 40 int_4* idata ; 40 41 char* sdata ; … … 56 57 virtual ~XNTuple(); 57 58 58 void Fill( double* d_data, float* f_data, long* i_data, char** sdata);59 void Fill(r_8* d_data, r_4* f_data, int_4* i_data, char** sdata); 59 60 60 61 inline int_4 NEntry() const { return mNEnt ; } … … 67 68 string NomIndex(int k) const ; 68 69 69 doubleGetDVal(int i, int k) const ;70 floatGetFVal(int i, int k) const ;71 longGetIVal(int i, int k) const ;70 r_8 GetDVal(int i, int k) const ; 71 r_4 GetFVal(int i, int k) const ; 72 int_4 GetIVal(int i, int k) const ; 72 73 string GetSVal(int i, int k) const ; 73 74 // MuTyV GetVal(char const* nom) ; … … 83 84 84 85 // Remplissage depuis fichier ASCII 85 int FillFromASCIIFile(string const& fn, double ddfval=0., floatdfval=0.,86 int FillFromASCIIFile(string const& fn, r_8 ddfval=0., r_4 dfval=0., 86 87 int dival=0, const char * dsval=""); 87 88 … … 112 113 113 114 // pour la persistance sur fichiers fits 114 void SetDVal(int i, int k, doublev);115 void SetFVal(int i, int k, floatv);115 void SetDVal(int i, int k, r_8 v); 116 void SetFVal(int i, int k, r_4 v); 116 117 void SetIVal(int i, int k, int v); 117 118 void SetSVal(int i, int k, char* v);
Note:
See TracChangeset
for help on using the changeset viewer.