#ifndef ROO_TREE_DATA_STORE
#define ROO_TREE_DATA_STORE
#include "RooAbsDataStore.h"
#include "TString.h"
class RooAbsArg ;
class RooArgList ;
class TTree ;
class RooFormulaVar ;
class RooArgSet ;
class RooTreeDataStore : public RooAbsDataStore {
public:
RooTreeDataStore() ;
RooTreeDataStore(TTree* t, const RooArgSet& vars) ;
RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars) ;
virtual RooAbsDataStore* clone(const RooArgSet& vars, const char* newname=0) const { return new RooTreeDataStore(*this,vars,newname) ; }
RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, TTree& t, const RooFormulaVar& select) ;
RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, TTree& t, const char* selExpr=0) ;
RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, const RooAbsDataStore& tds, const RooFormulaVar& select) ;
RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, const RooAbsDataStore& tds, const char* selExpr=0) ;
RooTreeDataStore(const char *name, const char *title, RooAbsDataStore& tds,
const RooArgSet& vars, const RooFormulaVar* cutVar, const char* cutRange,
Int_t nStart, Int_t nStop, Bool_t ) ;
RooTreeDataStore(const RooTreeDataStore& other, const char* newname=0) ;
RooTreeDataStore(const RooTreeDataStore& other, const RooArgSet& vars, const char* newname=0) ;
virtual ~RooTreeDataStore() ;
virtual Int_t fill() ;
using RooAbsDataStore::get ;
virtual const RooArgSet* get(Int_t index) const ;
virtual Bool_t changeObservableName(const char* from, const char* to) ;
virtual RooAbsArg* addColumn(RooAbsArg& var, Bool_t adjustRange=kTRUE) ;
virtual RooArgSet* addColumns(const RooArgList& varList) ;
RooAbsDataStore* merge(const RooArgSet& allvars, std::list<RooAbsDataStore*> dstoreList) ;
virtual void append(RooAbsDataStore& other) ;
virtual Bool_t valid() const ;
virtual Int_t numEntries() const ;
virtual void reset() ;
TTree& tree() { return *_tree ; }
Stat_t GetEntries() const;
void Reset(Option_t* option=0);
Int_t Fill();
Int_t GetEntry(Int_t entry = 0, Int_t getall = 0);
virtual void cacheArgs(RooArgSet& varSet, const RooArgSet* nset=0) ;
virtual void setArgStatus(const RooArgSet& set, Bool_t active) ;
virtual void resetCache() ;
void loadValues(const TTree *t, const RooFormulaVar* select=0, const char* rangeName=0, Int_t nStart=0, Int_t nStop=2000000000) ;
void loadValues(const RooAbsDataStore *tds, const RooFormulaVar* select=0, const char* rangeName=0, Int_t nStart=0, Int_t nStop=2000000000) ;
virtual void checkInit() const;
protected:
void initialize();
void initCache(const RooArgSet& cachedVars) ;
void setBranchBufferSize(Int_t size) { _defTreeBufSize = size ; }
Int_t getBranchBufferSize() const { return _defTreeBufSize ; }
static Int_t _defTreeBufSize ;
void createTree(const char* name, const char* title) ;
TTree *_tree ;
TTree *_cacheTree ;
mutable Bool_t _defCtor ;
ClassDef(RooTreeDataStore,1)
};
#endif