39 ClassImp(RooObjCacheManager);
43 Bool_t RooObjCacheManager::_clearObsList(kFALSE) ;
52 RooObjCacheManager::RooObjCacheManager(RooAbsArg* owner, Int_t maxSize, Bool_t clearCacheOnServerRedirect, Bool_t allowOptimize) :
53 RooCacheManager<RooAbsCacheElement>(owner,maxSize),
54 _clearOnRedirect(clearCacheOnServerRedirect),
55 _allowOptimize(allowOptimize),
56 _optCacheModeSeen(kFALSE),
57 _optCacheObservables(0)
65 RooObjCacheManager::RooObjCacheManager(
const RooObjCacheManager& other, RooAbsArg* owner) :
66 RooCacheManager<RooAbsCacheElement>(other,owner),
67 _clearOnRedirect(other._clearOnRedirect),
68 _allowOptimize(other._allowOptimize),
69 _optCacheModeSeen(kFALSE),
70 _optCacheObservables(0)
78 RooObjCacheManager::~RooObjCacheManager()
80 if (_optCacheObservables) {
81 delete _optCacheObservables ;
91 Bool_t RooObjCacheManager::redirectServersHook(
const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive)
93 if (_clearOnRedirect) {
99 for (Int_t i=0 ; i<cacheSize() ; i++) {
101 _object[i]->redirectServersHook(newServerList,mustReplaceAll,nameChange,isRecursive) ;
115 void RooObjCacheManager::operModeHook()
121 for (Int_t i=0 ; i<cacheSize() ; i++) {
123 _object[i]->operModeHook(_owner->operMode()) ;
136 void RooObjCacheManager::optimizeCacheMode(
const RooArgSet& obs, RooArgSet& optNodes, RooLinkedList& processedNodes)
138 oocxcoutD(_owner,Caching) <<
"RooObjCacheManager::optimizeCacheMode(owner=" << _owner->GetName() <<
") obs = " << obs << endl ;
140 _optCacheModeSeen = kTRUE ;
142 if (_optCacheObservables) {
143 _optCacheObservables->removeAll() ;
144 _optCacheObservables->add(obs) ;
146 _optCacheObservables = (RooArgSet*)
new RooArgSet(obs) ;
149 for (Int_t i=0 ; i<cacheSize() ; i++) {
151 _object[i]->optimizeCacheMode(obs,optNodes,processedNodes) ;
159 void RooObjCacheManager::sterilize()
161 RooCacheManager<RooAbsCacheElement>::sterilize() ;
167 if (_optCacheObservables && _clearObsList) {
168 delete _optCacheObservables ;
169 _optCacheObservables = 0 ;
170 _optCacheModeSeen = kFALSE ;
182 void RooObjCacheManager::insertObjectHook(RooAbsCacheElement& obj)
184 obj.setOwner(_owner) ;
187 if (_optCacheModeSeen) {
190 obj.optimizeCacheMode(*_optCacheObservables,s,l) ;
201 void RooObjCacheManager::printCompactTreeHook(std::ostream& os,
const char *indent)
203 for (Int_t i=0 ; i<cacheSize() ; i++) {
205 _object[i]->printCompactTreeHook(os,indent,i,cacheSize()-1) ;
216 void RooObjCacheManager::findConstantNodes(
const RooArgSet& obs, RooArgSet& cacheList, RooLinkedList& processedNodes)
218 if (!_allowOptimize) {
222 for (Int_t i=0 ; i<cacheSize() ; i++) {
224 _object[i]->findConstantNodes(obs,cacheList, processedNodes) ;