#ifndef ROOABSCACHEDPDF
#define ROOABSCACHEDPDF
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooAbsReal.h"
#include "RooHistPdf.h"
#include "RooObjCacheManager.h"
#include <map>
class RooArgSet ;
class RooAbsCachedPdf : public RooAbsPdf {
public:
RooAbsCachedPdf() {} ;
RooAbsCachedPdf(const char *name, const char *title, Int_t ipOrder=0);
RooAbsCachedPdf(const RooAbsCachedPdf& other, const char* name=0) ;
virtual ~RooAbsCachedPdf() ;
virtual Double_t getVal(const RooArgSet* set=0) const ;
virtual Bool_t selfNormalized() const { return kTRUE ; }
void setInterpolationOrder(Int_t order) ;
Int_t getInterpolationOrder() const { return _ipOrder ; }
virtual Bool_t forceAnalyticalInt(const RooAbsArg& ) const { return kTRUE ; }
virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName=0) const ;
virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
protected:
class CacheElem : public RooAbsCacheElement {
public:
virtual ~CacheElem() {} ;
RooHistPdf* _pdf ;
RooAbsReal* _params ;
RooDataHist* _hist ;
virtual RooArgList containedArgs(Action) ;
virtual void printCompactTreeHook(std::ostream&, const char *, Int_t, Int_t) ;
} ;
const CacheElem* getCache(const RooArgSet* nset) const ;
void clearCacheObject(CacheElem& cache) const ;
virtual const char* inputBaseName() const = 0 ;
virtual RooArgSet* actualObservables(const RooArgSet& nset) const = 0 ;
virtual RooArgSet* actualParameters(const RooArgSet& nset) const = 0 ;
virtual void fillCacheObject(CacheElem& cache) const = 0 ;
mutable RooObjCacheManager _cacheMgr ;
Int_t _ipOrder ;
TString cacheNameSuffix(const RooArgSet& nset) const ;
void disableCache(Bool_t flag) { _disableCache = flag ; }
mutable std::map<Int_t,std::pair<const RooArgSet*,const RooArgSet*> > _anaIntMap ;
private:
Bool_t _disableCache ;
ClassDef(RooAbsCachedPdf,0)
};
#endif
Last update: Thu Jan 17 08:43:28 2008
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.