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=nullptr) ;
30 ~RooAbsCachedReal() override ;
31
32 double getValV(const RooArgSet* set=nullptr) 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=nullptr) const override ;
50 double analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=nullptr) 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
89 virtual const char* payloadUniqueSuffix() const { return nullptr ; }
90
91 friend class FuncCacheElem ;
92 virtual const char* binningName() const {
93 // Returns name of binning to be used for cache histogram creation
94 return "cache" ;
95 }
96 virtual FuncCacheElem* createCache(const RooArgSet* nset) const ;
97 virtual const char* inputBaseName() const = 0 ;
98 virtual RooArgSet* actualObservables(const RooArgSet& nset) const = 0 ;
99 virtual RooArgSet* actualParameters(const RooArgSet& nset) const = 0 ;
100 virtual void fillCacheObject(FuncCacheElem& cache) const = 0 ;
101
102 mutable RooObjCacheManager _cacheMgr ; ///<! The cache manager
103
104
105 Int_t _ipOrder ; ///< Interpolation order for cache histograms
106
107 TString cacheNameSuffix(const RooArgSet& nset) const ;
108
109 mutable std::map<Int_t,std::pair<const RooArgSet*,const RooArgSet*> > _anaIntMap ; ///<! Map for analytical integration codes
110
111
112private:
113
114 bool _disableCache ; // Flag to run object in passthrough (= non-caching mode)
115
116 ClassDefOverride(RooAbsCachedReal,1) // Abstract base class for cached p.d.f.s
117};
118
119#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:71
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
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)
double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Forward call to implementation in relevant RooHistFunc instance.
RooObjCacheManager _cacheMgr
! The cache manager
Int_t _ipOrder
Interpolation order for cache histograms.
~RooAbsCachedReal() override
Destructor.
Int_t getInterpolationOrder() const
virtual RooArgSet * actualParameters(const RooArgSet &nset) const =0
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
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Return analytical integration capabilities of the RooHistFunc that corresponds to the set of observab...
virtual const char * payloadUniqueSuffix() const
virtual RooArgSet * actualObservables(const RooArgSet &nset) const =0
double getValV(const RooArgSet *set=nullptr) const override
Implementation of getVal() overriding default implementation of RooAbsReal.
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:62
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:56
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:39
RooHistFunc implements a real-valued function sampled from a multidimensional histogram.
Definition: RooHistFunc.h:31
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
Basic string class.
Definition: TString.h:136