Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooExpensiveObjectCache.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_EXPENSIVE_OBJECT_CACHE
17#define ROO_EXPENSIVE_OBJECT_CACHE
18
19#include "TObject.h"
20#include "RooArgSet.h"
21#include "TString.h"
22#include <map>
23
25public:
26
29 ~RooExpensiveObjectCache() override ;
30
31 bool registerObject(const char* ownerName, const char* objectName, TObject& cacheObject, const RooArgSet& params) ;
32 const TObject* retrieveObject(const char* name, TClass* tclass, const RooArgSet& params) ;
33
34 const TObject* getObj(Int_t uniqueID) ;
35 bool clearObj(Int_t uniqueID) ;
36 bool setObj(Int_t uniqueID, TObject* obj) ;
37 void clearAll() ;
38
39 void importCacheObjects(RooExpensiveObjectCache& other, const char* ownerName, bool verbose=false) ;
40
42
43 Int_t size() const { return _map.size() ; }
44 bool empty() const { return _map.empty() ; }
45
46 void print() const ;
47
49 public:
50 ExpensiveObject() = default;
51 ExpensiveObject(Int_t uid, const char *ownerName, TObject &payload, RooArgSet const &params);
53 virtual ~ExpensiveObject();
54 bool matches(TClass *tc, const RooArgSet &params);
55
56 Int_t uid() const { return _uid; }
57 const TObject *payload() const { return _payload; }
58 TObject *payload() { return _payload; }
59 void setPayload(TObject *obj) { _payload = obj; }
60 const char *ownerName() const { return _ownerName.Data(); }
61
62 void print() const;
63
64 protected:
65 Int_t _uid = 0; ///< Unique element ID ;
66 TObject *_payload = nullptr; ///< Payload
67 std::map<TString, double> _realRefParams; ///< Names and values of real-valued reference parameters
68 std::map<TString, Int_t> _catRefParams; ///< Names and values of discrete-valued reference parameters
69 TString _ownerName; ///< Name of RooAbsArg object that is associated to cache contents
70
71 ClassDef(ExpensiveObject, 2); // Cache element containing expensive object and parameter values for which object is valid
72 };
73
74protected:
75
77
78 std::map<TString,ExpensiveObject*> _map ;
79
80
81 ClassDefOverride(RooExpensiveObjectCache,2) // Singleton class that serves as session repository for expensive objects
82};
83
84#endif
#define ClassDef(name, id)
Definition Rtypes.h:342
#define ClassDefOverride(name, id)
Definition Rtypes.h:346
char name[80]
Definition TGX11.cxx:110
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:24
TString _ownerName
Name of RooAbsArg object that is associated to cache contents.
std::map< TString, double > _realRefParams
Names and values of real-valued reference parameters.
bool matches(TClass *tc, const RooArgSet &params)
Check object type ;.
std::map< TString, Int_t > _catRefParams
Names and values of discrete-valued reference parameters.
Singleton class that serves as repository for objects that are expensive to calculate.
const TObject * getObj(Int_t uniqueID)
Retrieve payload object of cache element with given unique ID.
~RooExpensiveObjectCache() override
Destructor.
bool registerObject(const char *ownerName, const char *objectName, TObject &cacheObject, const RooArgSet &params)
Register object associated with given name and given associated parameters with given values in cache...
bool clearObj(Int_t uniqueID)
Clear cache element with given unique ID Retrieve payload object of cache element with given unique I...
std::map< TString, ExpensiveObject * > _map
RooExpensiveObjectCache(const RooExpensiveObjectCache &other)
const TObject * retrieveObject(const char *name, TClass *tclass, const RooArgSet &params)
Retrieve object from cache that was registered under given name with given parameters,...
void clearAll()
Clear all cache elements.
bool setObj(Int_t uniqueID, TObject *obj)
Place new payload object in cache element with given unique ID.
static RooExpensiveObjectCache & instance()
Return reference to singleton instance.
void importCacheObjects(RooExpensiveObjectCache &other, const char *ownerName, bool verbose=false)
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376