12 #ifndef ROOABSCACHEDREAL
13 #define ROOABSCACHEDREAL
21 class RooChangeTracker ;
24 class RooAbsCachedReal :
public RooAbsReal {
27 RooAbsCachedReal() {} ;
28 RooAbsCachedReal(
const char *name,
const char *title, Int_t ipOrder=0);
29 RooAbsCachedReal(
const RooAbsCachedReal& other,
const char* name=0) ;
30 virtual ~RooAbsCachedReal() ;
32 virtual Double_t getValV(
const RooArgSet* set=0)
const ;
33 virtual Bool_t selfNormalized()
const {
38 void setInterpolationOrder(Int_t order) ;
39 Int_t getInterpolationOrder()
const {
44 virtual Bool_t forceAnalyticalInt(
const RooAbsArg& )
const {
49 virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
50 virtual Double_t analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
52 void disableCache(Bool_t flag) {
54 _disableCache = flag ;
59 class FuncCacheElem :
public RooAbsCacheElement {
61 FuncCacheElem(
const RooAbsCachedReal&
self,
const RooArgSet* nset) ;
62 virtual ~FuncCacheElem() ;
65 virtual RooArgList containedArgs(Action) ;
66 virtual void printCompactTreeHook(std::ostream&,
const char *, Int_t, Int_t) ;
68 RooHistFunc* func() {
return _func ; }
69 RooDataHist* hist() {
return _hist ; }
70 RooChangeTracker* paramTracker() {
return _paramTracker ; }
72 RooAbsReal* sourceClone() {
return _sourceClone ; }
73 void setSourceClone(RooAbsReal* newSource) {
delete _sourceClone ; _sourceClone = newSource ; }
75 Bool_t cacheSource() {
return _cacheSource ; }
76 void setCacheSource(Bool_t flag) { _cacheSource = flag ; }
81 RooChangeTracker* _paramTracker ;
83 RooAbsReal* _sourceClone ;
87 FuncCacheElem* getCache(
const RooArgSet* nset)
const ;
88 void clearCacheObject(FuncCacheElem& cache)
const ;
90 virtual const char* payloadUniqueSuffix()
const {
return 0 ; }
92 friend class FuncCacheElem ;
93 virtual const char* binningName()
const {
97 virtual FuncCacheElem* createCache(
const RooArgSet* nset)
const ;
98 virtual const char* inputBaseName()
const = 0 ;
99 virtual RooArgSet* actualObservables(
const RooArgSet& nset)
const = 0 ;
100 virtual RooArgSet* actualParameters(
const RooArgSet& nset)
const = 0 ;
101 virtual void fillCacheObject(FuncCacheElem& cache)
const = 0 ;
103 mutable RooObjCacheManager _cacheMgr ;
108 TString cacheNameSuffix(
const RooArgSet& nset)
const ;
110 mutable std::map<Int_t,std::pair<const RooArgSet*,const RooArgSet*> > _anaIntMap ;
115 Bool_t _disableCache ;
117 ClassDef(RooAbsCachedReal,1)