16 #ifndef ROO_COMPOSITE_DATA_STORE
17 #define ROO_COMPOSITE_DATA_STORE
31 class RooCompositeDataStore :
public RooAbsDataStore {
34 RooCompositeDataStore() ;
37 RooCompositeDataStore(
const char* name,
const char* title,
const RooArgSet& vars, RooCategory& indexCat, std::map<std::string,RooAbsDataStore*> inputData) ;
40 virtual RooAbsDataStore* clone(
const char* newname=0)
const {
return new RooCompositeDataStore(*
this,newname) ; }
41 virtual RooAbsDataStore* clone(
const RooArgSet& vars,
const char* newname=0)
const {
return new RooCompositeDataStore(*
this,vars,newname) ; }
43 RooCompositeDataStore(
const RooCompositeDataStore& other,
const char* newname=0) ;
44 RooCompositeDataStore(
const RooCompositeDataStore& other,
const RooArgSet& vars,
const char* newname=0) ;
45 virtual ~RooCompositeDataStore() ;
50 virtual Int_t fill() ;
52 virtual Double_t sumEntries()
const ;
55 using RooAbsDataStore::get ;
56 virtual const RooArgSet*
get(Int_t index)
const ;
57 virtual Double_t weight()
const ;
58 virtual Double_t weight(Int_t index)
const ;
59 virtual Double_t weightError(RooAbsData::ErrorType etype=RooAbsData::Poisson)
const ;
60 virtual void weightError(Double_t& lo, Double_t& hi, RooAbsData::ErrorType etype=RooAbsData::Poisson)
const ;
61 virtual Bool_t isWeighted()
const ;
64 virtual Bool_t changeObservableName(
const char* from,
const char* to) ;
67 virtual RooAbsArg* addColumn(RooAbsArg& var, Bool_t adjustRange=kTRUE) ;
68 virtual RooArgSet* addColumns(
const RooArgList& varList) ;
71 RooAbsDataStore* merge(
const RooArgSet& allvars, std::list<RooAbsDataStore*> dstoreList) ;
73 RooCategory* index() {
return _indexCat ; }
76 virtual void append(RooAbsDataStore& other) ;
79 virtual Bool_t valid()
const ;
80 virtual Int_t numEntries()
const ;
81 virtual void reset() ;
84 virtual void attachBuffers(
const RooArgSet& extObs) ;
85 virtual void resetBuffers() ;
88 virtual void cacheArgs(
const RooAbsArg* owner, RooArgSet& varSet,
const RooArgSet* nset=0, Bool_t skipZeroWeights=kFALSE) ;
89 virtual const RooAbsArg* cacheOwner() {
return 0 ; }
90 virtual void setArgStatus(
const RooArgSet& set, Bool_t active) ;
91 virtual void resetCache() ;
93 virtual void recalculateCache(
const RooArgSet* , Int_t , Int_t , Int_t , Bool_t ) ;
94 virtual Bool_t hasFilledCache()
const ;
96 void loadValues(
const RooAbsDataStore *tds,
const RooFormulaVar* select=0,
const char* rangeName=0, Int_t nStart=0, Int_t nStop=2000000000) ;
98 virtual void forceCacheUpdate() ;
100 virtual std::vector<RooSpan<const double>> getBatch(std::size_t first, std::size_t last)
const {
102 std::cerr <<
"This functionality is not yet implemented for composite data stores." << std::endl;
105 std::vector<double> vec(first, last);
106 return {RooSpan<const double>(vec)};
111 void attachCache(
const RooAbsArg* newOwner,
const RooArgSet& cachedVars) ;
113 std::map<Int_t,RooAbsDataStore*> _dataMap ;
114 RooCategory* _indexCat ;
115 mutable RooAbsDataStore* _curStore ;
116 mutable Int_t _curIndex ;
119 ClassDef(RooCompositeDataStore,1)