#ifndef ROO_OBJ_CACHE_MANAGER
#define ROO_OBJ_CACHE_MANAGER
#include "Rtypes.h"
#include "RooNormSetCache.h"
#include "RooAbsReal.h"
#include "RooArgSet.h"
#include "RooArgList.h"
#include "RooAbsCache.h"
#include "RooAbsCacheElement.h"
#include "RooCacheManager.h"
#include <list>
class RooNameSet ;
class RooObjCacheManager : public RooCacheManager<RooAbsCacheElement> {
public:
RooObjCacheManager(RooAbsArg* owner=0, Int_t maxSize=10, Bool_t clearCacheOnServerRedirect=kTRUE) ;
RooObjCacheManager(const RooObjCacheManager& other, RooAbsArg* owner=0) ;
virtual ~RooObjCacheManager() ;
virtual Bool_t redirectServersHook(const RooAbsCollection& , Bool_t , Bool_t , Bool_t ) ;
virtual void operModeHook() ;
virtual void optimizeCacheMode(const RooArgSet& , RooArgSet& , RooLinkedList& ) ;
virtual void printCompactTreeHook(std::ostream&, const char *) ;
virtual void findConstantNodes(const RooArgSet& , RooArgSet& , RooLinkedList& ) ;
virtual void insertObjectHook(RooAbsCacheElement&) ;
void sterilize() ;
static void doClearObsList(Bool_t flag) { _clearObsList = flag ; }
static Bool_t clearObsList() { return _clearObsList ; }
protected:
Bool_t _clearOnRedirect ;
Bool_t _optCacheModeSeen ;
RooArgSet* _optCacheObservables ;
static Bool_t _clearObsList ;
ClassDef(RooObjCacheManager,2)
} ;
#endif