Logo ROOT  
Reference Guide
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() { _uid = 0 ; _payload = nullptr ; } ;
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
66 Int_t _uid ; ///< Unique element ID ;
67 TObject* _payload ; ///< Payload
68 std::map<TString,double> _realRefParams ; ///< Names and values of real-valued reference parameters
69 std::map<TString,Int_t> _catRefParams ; ///< Names and values of discrete-valued reference parameters
70 TString _ownerName ; ///< Name of RooAbsArg object that is associated to cache contents
71
72 ClassDef(ExpensiveObject,2) ; // Cache element containing expensive object and parameter values for which object is valid
73} ;
74
75
76protected:
77
79
80 std::map<TString,ExpensiveObject*> _map ;
81
82
83 ClassDefOverride(RooExpensiveObjectCache,2) // Singleton class that serves as session repository for expensive objects
84};
85
86#endif
#define ClassDef(name, id)
Definition: Rtypes.h:335
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
char name[80]
Definition: TGX11.cxx:110
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:56
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.
RooExpensiveObjectCache is a singleton class that serves as repository for objects that are expensive...
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:136
const char * Data() const
Definition: TString.h:369