// ---------------------------------- TreeFormula.h #ifndef ROOT_TTreeFormula #define ROOT_TTreeFormula //+SEQ,CopyRight,T=NOINCLUDE. ////////////////////////////////////////////////////////////////////////// // // // TTreeFormula // // // // The Tree formula class // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TFormula //*KEEP,TFormula. #include "TFormula.h" //*KEND. #endif #ifndef ROOT_TLeaf //*KEEP,TLeaf,T=C++. #include "TLeaf.h" //*KEND. #endif #ifndef ROOT_TObjArray //*KEEP,TObjArray. #include "TObjArray.h" //*KEND. #endif const Int_t kMAXCODES = 100; class TTree; class TMethodCall; class TTreeFormula : public TFormula { protected: TTree *fTree; //pointer to Tree Short_t fCodes[kMAXCODES]; //List of leaf numbers referenced in formula Int_t fNcodes; //Number of leaves referenced in formula Int_t fMultiplicity; //Number of array elements in leaves in case of a TClonesArray Int_t fInstance; //Instance number for GetValue Int_t fNindex; //Size of fIndex Int_t *fIndex; //array of instances numbers TObjArray fMethods; //List of leaf method calls public: TTreeFormula(); TTreeFormula(const char *name,const char *formula, TTree *tree); virtual ~TTreeFormula(); virtual Int_t DefinedVariable(TString &variable); virtual Double_t EvalInstance(Int_t i=0); TMethodCall *GetMethodCall(Int_t code); virtual Int_t GetMultiplicity() {return fMultiplicity;} virtual TLeaf *GetLeaf(Int_t n); virtual Int_t GetNcodes() {return fNcodes;} virtual Int_t GetNdata(); virtual char *PrintValue(Int_t mode=0); virtual void SetTree(TTree *tree) {fTree = tree;} ClassDef(TTreeFormula,1) //The Tree formula }; #endif