00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_COMPOSITE_DATA_STORE
00017 #define ROO_COMPOSITE_DATA_STORE
00018
00019 #include "RooAbsDataStore.h"
00020 #include "TString.h"
00021 #include <map>
00022 #include <string>
00023
00024 class RooAbsArg ;
00025 class RooArgList ;
00026 class RooFormulaVar ;
00027 class RooArgSet ;
00028 class RooCategory ;
00029
00030
00031 class RooCompositeDataStore : public RooAbsDataStore {
00032 public:
00033
00034 RooCompositeDataStore() ;
00035
00036
00037 RooCompositeDataStore(const char* name, const char* title, const RooArgSet& vars, RooCategory& indexCat, std::map<std::string,RooAbsDataStore*> inputData) ;
00038
00039
00040 virtual RooAbsDataStore* clone(const RooArgSet& vars, const char* newname=0) const { return new RooCompositeDataStore(*this,vars,newname) ; }
00041
00042 RooCompositeDataStore(const RooCompositeDataStore& other, const char* newname=0) ;
00043 RooCompositeDataStore(const RooCompositeDataStore& other, const RooArgSet& vars, const char* newname=0) ;
00044 virtual ~RooCompositeDataStore() ;
00045
00046
00047
00048 virtual Int_t fill() ;
00049
00050
00051 using RooAbsDataStore::get ;
00052 virtual const RooArgSet* get(Int_t index) const ;
00053 virtual Double_t weight() const ;
00054 virtual Double_t weight(Int_t index) const ;
00055 virtual Double_t weightError(RooAbsData::ErrorType etype=RooAbsData::Poisson) const ;
00056 virtual void weightError(Double_t& lo, Double_t& hi, RooAbsData::ErrorType etype=RooAbsData::Poisson) const ;
00057 virtual Bool_t isWeighted() const ;
00058
00059
00060 virtual Bool_t changeObservableName(const char* from, const char* to) ;
00061
00062
00063 virtual RooAbsArg* addColumn(RooAbsArg& var, Bool_t adjustRange=kTRUE) ;
00064 virtual RooArgSet* addColumns(const RooArgList& varList) ;
00065
00066
00067 RooAbsDataStore* merge(const RooArgSet& allvars, std::list<RooAbsDataStore*> dstoreList) ;
00068
00069
00070 virtual void append(RooAbsDataStore& other) ;
00071
00072
00073 virtual Bool_t valid() const ;
00074 virtual Int_t numEntries() const ;
00075 virtual void reset() ;
00076
00077
00078 virtual void cacheArgs(const RooAbsArg* owner, RooArgSet& varSet, const RooArgSet* nset=0) ;
00079 virtual const RooAbsArg* cacheOwner() { return 0 ; }
00080 virtual void setArgStatus(const RooArgSet& set, Bool_t active) ;
00081 virtual void resetCache() ;
00082
00083 protected:
00084
00085 void attachCache(const RooAbsArg* newOwner, const RooArgSet& cachedVars) ;
00086
00087 std::map<std::string,RooAbsDataStore*> _dataMap ;
00088 RooCategory* _indexCat ;
00089 mutable RooAbsDataStore* _curStore ;
00090 mutable Int_t _curIndex ;
00091
00092 ClassDef(RooCompositeDataStore,1)
00093 };
00094
00095
00096 #endif