Logo ROOT  
Reference Guide
RooAbsCachedReal.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * *
4 * Copyright (c) 2000-2005, Regents of the University of California *
5 * and Stanford University. All rights reserved. *
6 * *
7 * Redistribution and use in source and binary forms, *
8 * with or without modification, are permitted according to the terms *
9 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
10 *****************************************************************************/
11
12#ifndef ROOABSCACHEDREAL
13#define ROOABSCACHEDREAL
14
15#include "RooAbsPdf.h"
16#include "RooRealProxy.h"
17#include "RooAbsReal.h"
18#include "RooHistFunc.h"
19#include "RooObjCacheManager.h"
20#include <map>
21class RooChangeTracker ;
22class RooArgSet ;
23
25public:
26
28 RooAbsCachedReal(const char *name, const char *title, Int_t ipOrder=0);
29 RooAbsCachedReal(const RooAbsCachedReal& other, const char* name=0) ;
30 ~RooAbsCachedReal() override ;
31
32 double getValV(const RooArgSet* set=0) const override ;
33 virtual bool selfNormalized() const {
34 // Declares function self normalized
35 return true ;
36 }
37
38 void setInterpolationOrder(Int_t order) ;
40 // Set interpolation order in RooHistFuncs that represent cache histograms
41 return _ipOrder ;
42 }
43
44 bool forceAnalyticalInt(const RooAbsArg& /*dep*/) const override {
45 // Force all observables to be offered for internal integration
46 return true ;
47 }
48
49 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName=0) const override ;
50 double analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const override ;
51
52 void disableCache(bool flag) {
53 // Switch to disable caching mechanism
54 _disableCache = flag ;
55 }
56
57protected:
58
60 public:
61 FuncCacheElem(const RooAbsCachedReal& self, const RooArgSet* nset) ;
62 ~FuncCacheElem() override ;
63
64 // Cache management functions
66 void printCompactTreeHook(std::ostream&, const char *, Int_t, Int_t) override ;
67
68 RooHistFunc* func() { return _func ; }
69 RooDataHist* hist() { return _hist ; }
71
73 void setSourceClone(RooAbsReal* newSource) { delete _sourceClone ; _sourceClone = newSource ; }
74
75 bool cacheSource() { return _cacheSource ; }
76 void setCacheSource(bool flag) { _cacheSource = flag ; }
77
78 private:
79 // Payload
85 } ;
86
87 FuncCacheElem* getCache(const RooArgSet* nset) const ;
88 void clearCacheObject(FuncCacheElem& cache) const ;
89
90 virtual const char* payloadUniqueSuffix() const { return 0 ; }
91
92 friend class FuncCacheElem ;
93 virtual const char* binningName() const {
94 // Returns name of binning to be used for cache histogram creation
95 return "cache" ;
96 }
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 ;
102
103 mutable RooObjCacheManager _cacheMgr ; ///<! The cache manager
104
105
106 Int_t _ipOrder ; ///< Interpolation order for cache histograms
107
108 TString cacheNameSuffix(const RooArgSet& nset) const ;
109
110 mutable std::map<Int_t,std::pair<const RooArgSet*,const RooArgSet*> > _anaIntMap ; ///<! Map for analytical integration codes
111
112
113private:
114
115 bool _disableCache ; // Flag to run object in passthrough (= non-caching mode)
116
117 ClassDefOverride(RooAbsCachedReal,1) // Abstract base class for cached p.d.f.s
118};
119
120#endif
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
char name[80]
Definition: TGX11.cxx:110
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:77
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
void printCompactTreeHook(std::ostream &, const char *, Int_t, Int_t) override
Print contents of cache when printing self as part of object tree.
RooChangeTracker * paramTracker()
RooArgList containedArgs(Action) override
Return list of contained RooAbsArg objects.
FuncCacheElem(const RooAbsCachedReal &self, const RooArgSet *nset)
Constructor of cache storage unit class.
void setSourceClone(RooAbsReal *newSource)
RooAbsCachedReal is the abstract base class for functions that need or want to cache their evaluate()...
void setInterpolationOrder(Int_t order)
Set interpolation order of RooHistFunct representing cache histogram.
virtual void fillCacheObject(FuncCacheElem &cache) const =0
virtual const char * inputBaseName() const =0
double getValV(const RooArgSet *set=0) const override
Implementation of getVal() overriding default implementation of RooAbsReal.
virtual FuncCacheElem * createCache(const RooArgSet *nset) const
Interface function to create an internal cache object that represent each cached function configurati...
TString cacheNameSuffix(const RooArgSet &nset) const
Construct unique suffix name for cache p.d.f object.
FuncCacheElem * getCache(const RooArgSet *nset) const
Retrieve cache corresponding to observables in nset.
virtual bool selfNormalized() const
void disableCache(bool flag)
RooObjCacheManager _cacheMgr
! The cache manager
void clearCacheObject(FuncCacheElem &cache) const
Mark all bins as unitialized (value -1)
Int_t _ipOrder
Interpolation order for cache histograms.
~RooAbsCachedReal() override
Destructor.
Int_t getInterpolationOrder() const
virtual RooArgSet * actualParameters(const RooArgSet &nset) const =0
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const override
Return analytical integration capabilities of the RooHistFunc that corresponds to the set of observab...
std::map< Int_t, std::pair< const RooArgSet *, const RooArgSet * > > _anaIntMap
! Map for analytical integration codes
bool forceAnalyticalInt(const RooAbsArg &) const override
friend class FuncCacheElem
virtual const char * payloadUniqueSuffix() const
virtual RooArgSet * actualObservables(const RooArgSet &nset) const =0
double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const override
Forward call to implementation in relevant RooHistFunc instance.
virtual const char * binningName() const
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:64
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
RooChangeTracker is a meta object that tracks value changes in a given set of RooAbsArgs by registeri...
The RooDataHist is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:45
RooHistFunc implements a real-valued function sampled from a multidimensional histogram.
Definition: RooHistFunc.h:30
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
Basic string class.
Definition: TString.h:136