source: Sophya/trunk/SophyaLib/NTools/generaldata.h@ 220

Last change on this file since 220 was 220, checked in by ansari, 26 years ago

Creation module DPC/NTools Reza 09/04/99

  • Property svn:executable set to *
File size: 5.5 KB
Line 
1#ifndef GENERALDATA_SEEN
2#define GENERALDATA_SEEN
3
4#include "exceptions.h"
5#include "ppersist.h"
6#include "poly.h"
7
8class GeneralFit;
9
10//================================================================
11// GENERALFITDATA
12//================================================================
13
14class GeneralFitData : public PPersist {
15public:
16 enum {classId = ClassId_GeneralFitData };
17 enum {Def_ErrF = 1, Def_ErrX = 0};
18
19 GeneralFitData(unsigned int nVar, unsigned int nDataAlloc, uint_2 errx=0);
20 GeneralFitData(GeneralFitData& data, bool clean=false);
21 GeneralFitData();
22 GeneralFitData(char *flnm);
23 virtual ~GeneralFitData();
24
25 void Alloc(unsigned int nVar, unsigned int nDataAlloc, int_2 errx=-1);
26 void SetDataPtr(int ptr = 0);
27
28 void KillData(int i);
29 void KillData(int i1,int i2);
30
31 void ValidData(int i);
32 void ValidData(int i1,int i2);
33 void ValidData();
34
35 void RedefineData1(int i,double x,double f,double err=Def_ErrF,double errx=Def_ErrX);
36 void RedefineData2(int i,double x,double y,double f,double err=Def_ErrF
37 ,double errx=Def_ErrX,double erry=Def_ErrX);
38 void RedefineData(int i,double* xp,double f,double err=Def_ErrF,double* errxp=NULL);
39
40 void AddData1(double x, double f, double err=Def_ErrF,double errx=Def_ErrX);
41 void AddData2(double x, double y, double f, double err=Def_ErrF
42 ,double errx=Def_ErrX,double erry=Def_ErrX);
43 void AddData(double* xp, double f, double err=Def_ErrF,double* errxp=NULL);
44 void AddData(float* xp, float f, float err=Def_ErrF,float* errxp=NULL);
45
46 void SetData1(int nData,double* x,double* f,double *err=NULL,double *errx=NULL);
47 void SetData1(int nData,float* x,float* f,float* err=NULL,float *errx=NULL);
48 void SetData2(int nData,double* x,double* y,double* f,double *err=NULL
49 ,double *errx=NULL,double *erry=NULL);
50 void SetData2(int nData,float* x,float* y,float* f,float* err=NULL
51 ,float *errx=NULL,float *erry=NULL);
52 void SetData(int nData,double** xp,double *f,double *err=NULL,double** errxp=NULL);
53 void SetData(int nData,float** xp,float* f,float* err=NULL,float** errxp=NULL);
54
55 void PrintStatus();
56 void PrintData(int i);
57 void PrintData(int i1,int i2);
58 void PrintData();
59
60 inline int GetSpaceFree() const { return mNDataAlloc - mNData; }
61 inline int NVar() const {return mNVar;}
62 inline int NData() const {return mNData;}
63 inline int NDataGood() const {return mNDataGood;}
64 inline int NDataAlloc() const {return mNDataAlloc;}
65
66 inline unsigned short int IsValid(int i) const
67 {if(i>=0 && i<mNData) return mOK[i]; else return 0;}
68 inline bool HasXErrors() {if(mErrXP) return true; else return false;}
69
70 inline double X1(int i) const
71 {if(i>=0 && i<mNData) return mXP[i]; else return 0.;}
72 inline double X(int i) const
73 {if(i>=0 && i<mNData) return mXP[i*mNVar]; else return 0.;}
74 inline double Y(int i) const
75 {if(i>=0 && i<mNData && 1<mNVar) return mXP[i*mNVar+1]; else return 0.;}
76 inline double Z(int i) const
77 {if(i>=0 && i<mNData && 2<mNVar) return mXP[i*mNVar+2]; else return 0.;}
78 inline double Absc(int j,int i) const
79 {if(i>=0 && i<mNData && j<mNVar)return mXP[i*mNVar+j]; else return 0.;}
80 inline double Val(int i) const
81 {if(i>=0 && i<mNData) return mF[i]; else return 0.;}
82
83 inline double EX1(int i) const
84 {if(mErrXP && i>=0 && i<mNData) return mErrXP[i]; else return 0.;}
85 inline double EX(int i) const
86 {if(mErrXP && i>=0 && i<mNData) return mErrXP[i*mNVar]; else return 0.;}
87 inline double EY(int i) const
88 {if(mErrXP && i>=0 && i<mNData && 1<mNVar) return mErrXP[i*mNVar+1];
89 else return 0.;}
90 inline double EZ(int i) const
91 {if(mErrXP && i>=0 && i<mNData && 2<mNVar) return mErrXP[i*mNVar+2];
92 else return 0.;}
93 inline double EAbsc(int j,int i) const
94 {if(mErrXP && i>=0 && i<mNData && j<mNVar) return mErrXP[i*mNVar+j];
95 else return 0.;}
96 inline double EVal(int i) const
97 {if(i>=0 && i<mNData) return mErr[i]; else return 0.;}
98
99 r_8* GetVec(int n, r_8* ret=NULL) const ;
100 r_4* GetVecR4(int n, r_4* ret=NULL) const ;
101 int GetMinMax(int var,int& imin,int& imax);
102 int GetMinMax(int var,double& min,double& max);
103 int GetMeanSigma(int var,double& mean,double& sigma,double min=1.,double max=-1.);
104 int GetMoMeMed(int var,double& mode,double& mean,double& median,
105 double min=1.,double max=-1.,double coeff=0.8);
106 int GetMode(int var,double& mode,double min=1.,double max=-1.,double coeff=0.8);
107 double PolFit(int varx,Poly& pol,int degre,bool ey=true);
108 double PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2=-1,bool ez=true);
109 GeneralFitData* FitResidus(GeneralFit& gfit);
110 GeneralFitData* FitFunction(GeneralFit& gfit);
111 string VarList_C(const char* nomx) const;
112
113 int_4 ClassId() const { return classId; }
114 static PPersist* Create() { return new GeneralFitData;}
115
116 virtual void WriteSelf(POutPersist&) const;
117 virtual void ReadSelf(PInPersist&);
118
119friend class GeneralFit;
120
121protected:
122 void Delete();
123
124 int_4 mNVar;
125 int_4 mNDataAlloc;
126 int_4 mNData;
127 int_4 mNDataGood;
128 uint_2 mOk_EXP;
129 r_8* mXP; // x0 y0 z0, x1 y1 z1, ..., xn yn zn
130 r_8* mErrXP; // Ex0 Ey0 Ez0, Ex1 Ey1 Ez1, ..., Exn Eyn Ezn
131 r_8* mF; // F0, F1, ...., Fn
132 r_8* mErr; // EF0, EF1, ...., EFn
133 uint_2* mOK; // 1 si pt valid, 0 sinon
134 r_8* BuffVar;
135 r_4* BuffVarR4;
136};
137
138#endif
Note: See TracBrowser for help on using the repository browser.