12 #ifndef ROOABSCACHEDPDF
13 #define ROOABSCACHEDPDF
23 class RooChangeTracker ;
25 class RooAbsCachedPdf :
public RooAbsPdf {
31 RooAbsCachedPdf(
const char *name,
const char *title, Int_t ipOrder=0);
32 RooAbsCachedPdf(
const RooAbsCachedPdf& other,
const char* name=0) ;
33 virtual ~RooAbsCachedPdf() ;
35 virtual Double_t getValV(
const RooArgSet* set=0)
const ;
36 virtual Bool_t selfNormalized()
const {
41 RooAbsPdf* getCachePdf(
const RooArgSet& nset)
const {
43 return getCachePdf(&nset) ;
45 RooDataHist* getCacheHist(
const RooArgSet& nset)
const {
47 return getCacheHist(&nset) ;
49 RooAbsPdf* getCachePdf(
const RooArgSet* nset=0)
const ;
50 RooDataHist* getCacheHist(
const RooArgSet* nset=0)
const ;
52 void setInterpolationOrder(Int_t order) ;
53 Int_t getInterpolationOrder()
const {
58 virtual Bool_t forceAnalyticalInt(
const RooAbsArg& dep)
const ;
59 virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
60 virtual Double_t analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
63 class PdfCacheElem :
public RooAbsCacheElement {
65 PdfCacheElem(
const RooAbsCachedPdf&
self,
const RooArgSet* nset) ;
66 virtual ~PdfCacheElem() ;
69 virtual RooArgList containedArgs(Action) ;
70 virtual void printCompactTreeHook(std::ostream&,
const char *, Int_t, Int_t) ;
72 RooHistPdf* pdf() {
return _pdf ; }
73 RooDataHist* hist() {
return _hist ; }
74 const RooArgSet& nset() {
return _nset ; }
75 RooChangeTracker* paramTracker() {
return _paramTracker ; }
80 RooChangeTracker* _paramTracker ;
89 PdfCacheElem* getCache(
const RooArgSet* nset, Bool_t recalculate=kTRUE)
const ;
90 void clearCacheObject(PdfCacheElem& cache)
const ;
92 virtual const char* payloadUniqueSuffix()
const {
return 0 ; }
94 friend class PdfCacheElem ;
95 virtual const char* binningName()
const {
99 virtual PdfCacheElem* createCache(
const RooArgSet* nset)
const {
101 return new PdfCacheElem(*
this,nset) ;
103 virtual const char* inputBaseName()
const = 0 ;
104 virtual RooArgSet* actualObservables(
const RooArgSet& nset)
const = 0 ;
105 virtual RooArgSet* actualParameters(
const RooArgSet& nset)
const = 0 ;
106 virtual RooAbsArg& pdfObservable(RooAbsArg& histObservable)
const {
return histObservable ; }
107 virtual void fillCacheObject(PdfCacheElem& cache)
const = 0 ;
109 mutable RooObjCacheManager _cacheMgr ;
112 TString cacheNameSuffix(
const RooArgSet& nset)
const ;
113 virtual TString histNameSuffix()
const {
return TString(
"") ; }
114 void disableCache(Bool_t flag) {
116 _disableCache = flag ;
119 mutable RooAICRegistry _anaReg ;
124 const RooArgSet* _nset ;
127 mutable std::map<Int_t,AnaIntConfig> _anaIntMap ;
133 Bool_t _disableCache ;
135 ClassDef(RooAbsCachedPdf,1)