00001 #ifndef __TMDFParameters__
00002 #define __TMDFParameters__
00003 #include "TArrayI.h"
00004 #include "TArrayD.h"
00005 #include "TF2.h"
00006 class TMDFParameters : public TObject {
00007 public:
00008 TMDFParameters(Double_t mean = 0,
00009 Int_t nvar = 0, Double_t *minV = 0, Double_t *maxV = 0, Double_t *meanV = 0, Int_t *maxPower = 0,
00010 Int_t ncoef = 0, Int_t *code = 0, Double_t *coef = 0, Double_t *dcoef = 0) :
00011 fMean(mean),
00012 fNvar(nvar), fVmin(nvar,minV), fVmax(nvar,maxV), fVmean(nvar,meanV), fMaxPower(nvar,maxPower),
00013 fNcoef(ncoef), fCode(ncoef,code), fCoef(ncoef,coef), fdCoef(ncoef,dcoef) {fgTMDFParameters = this;}
00014 virtual ~TMDFParameters() {fgTMDFParameters = 0;}
00015 static TMDFParameters *Instance() {return fgTMDFParameters;}
00016 TArrayD *GetTerms(Double_t *x);
00017 Double_t Eval(Double_t *x);
00018 Double_t dEval(Double_t *x);
00019 Double_t *Tcheb(Double_t x, Int_t N, Double_t *T);
00020 virtual void Print(Option_t *option="") const;
00021 static Double_t Func(Double_t *x, Double_t *p = 0);
00022 static TF1 *ProjectionX(Int_t code = 0);
00023 static TF2 *ProjectionXY(Int_t code1 = 0, Int_t code2 = 1);
00024 static Int_t Nvar() {return Instance()->fNvar;}
00025 static Double_t Vmin(Int_t code) {return Instance()->fVmin[code];}
00026 static Double_t Vmax(Int_t code) {return Instance()->fVmax[code];}
00027 static Double_t Vmean(Int_t code) {return Instance()->fVmean[code];}
00028 static void SetCurrent(TMDFParameters *p) {fgTMDFParameters = p;}
00029
00030 private:
00031 Double_t fMean;
00032 Int_t fNvar;
00033 TArrayD fVmin;
00034 TArrayD fVmax;
00035 TArrayD fVmean;
00036 TArrayI fMaxPower;
00037 Int_t fNcoef;
00038 TArrayI fCode;
00039 TArrayD fCoef;
00040 TArrayD fdCoef;
00041 static TMDFParameters *fgTMDFParameters;
00042 ClassDef(TMDFParameters,1)
00043 };
00044 #endif