// ---------------------------------- Formula.h #ifndef ROOT_TFormula #define ROOT_TFormula //+SEQ,CopyRight,T=NOINCLUDE. ////////////////////////////////////////////////////////////////////////// // // // TFormula // // // // The formula base class f(x,y,z,par) // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TNamed //*KEEP,TNamed. #include "TNamed.h" //*KEND. #endif class TFormula : public TNamed { protected: Int_t fNdim; //Dimension of function (1=1-Dim, 2=2-Dim,etc) Int_t fNpar; //Number of parameters Int_t fNoper; //Number of operators Int_t fNconst; //Number of constants Int_t fNumber; //formula number identifier Int_t fNval; //Number of different variables in expression Int_t fNstring; //Number of different constants character strings TString *fExpr; //List of expressions Int_t *fOper; //List of operators Double_t *fConst; //Array of fNconst formula constants Double_t *fParams; //Array of fNpar parameters TString *fNames; //Array of parameter names public: TFormula(); TFormula(const char *name,const char *formula); TFormula(const TFormula &formula); virtual ~TFormula(); virtual void Analyze(const char *schain, Int_t &err); virtual Int_t Compile(const char *expression=""); virtual void Copy(TObject &formula); virtual char *DefinedString(Int_t code); virtual Double_t DefinedValue(Int_t code); virtual Int_t DefinedVariable(TString &variable); virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0); virtual Double_t EvalPar(Double_t *x, Double_t *params=0); Int_t GetNdim() {return fNdim;} Int_t GetNpar() {return fNpar;} Int_t GetNumber() {return fNumber;} Double_t GetParameter(Int_t ipar) {return fParams[ipar];} virtual void GetParameters(Double_t *params){for(Int_t i=0;i