16 #ifndef ROO_EXPENSIVE_OBJECT_CACHE
17 #define ROO_EXPENSIVE_OBJECT_CACHE
25 class RooExpensiveObjectCache :
public TObject {
28 RooExpensiveObjectCache() ;
29 RooExpensiveObjectCache(
const RooExpensiveObjectCache&) ;
30 virtual ~RooExpensiveObjectCache() ;
32 Bool_t registerObject(
const char* ownerName,
const char* objectName, TObject& cacheObject, TIterator* paramIter) ;
33 Bool_t registerObject(
const char* ownerName,
const char* objectName, TObject& cacheObject,
const RooArgSet& params) ;
34 const TObject* retrieveObject(
const char* name, TClass* tclass,
const RooArgSet& params) ;
36 const TObject* getObj(Int_t uniqueID) ;
37 Bool_t clearObj(Int_t uniqueID) ;
38 Bool_t setObj(Int_t uniqueID, TObject* obj) ;
41 void importCacheObjects(RooExpensiveObjectCache& other,
const char* ownerName, Bool_t verbose=kFALSE) ;
43 static RooExpensiveObjectCache& instance() ;
45 Int_t size()
const {
return _map.size() ; }
49 class ExpensiveObject {
51 ExpensiveObject() { _uid = 0 ; _payload = 0 ; } ;
52 ExpensiveObject(Int_t uid,
const char* ownerName, TObject& payload, TIterator* paramIter) ;
53 ExpensiveObject(Int_t uid,
const ExpensiveObject& other) ;
54 virtual ~ExpensiveObject() ;
55 Bool_t matches(TClass* tc,
const RooArgSet& params) ;
57 Int_t uid()
const {
return _uid ; }
58 const TObject* payload()
const {
return _payload ; }
59 TObject* payload() {
return _payload ; }
60 void setPayload(TObject* obj) { _payload = obj ; }
61 const char* ownerName()
const {
return _ownerName.Data() ; }
69 std::map<TString,Double_t> _realRefParams ;
70 std::map<TString,Int_t> _catRefParams ;
73 ClassDef(ExpensiveObject,2) ;
81 std::map<TString,ExpensiveObject*> _map ;
84 ClassDef(RooExpensiveObjectCache,2)