36 class RooAbsCategory ;
37 class RooFactoryWSTool ;
43 class RooWorkspace :
public TNamed {
47 RooWorkspace(
const char* name, Bool_t doCINTExport) ;
48 RooWorkspace(
const char* name,
const char* title=0) ;
49 RooWorkspace(
const RooWorkspace& other) ;
52 void exportToCint(
const char* namespaceName=0) ;
54 Bool_t importClassCode(
const char* pat=
"*", Bool_t doReplace=kFALSE) ;
55 Bool_t importClassCode(TClass* theClass, Bool_t doReplace=kFALSE) ;
58 Bool_t
import(
const RooAbsArg& arg,
59 const RooCmdArg& arg1=RooCmdArg(),
const RooCmdArg& arg2=RooCmdArg(),
const RooCmdArg& arg3=RooCmdArg(),
60 const RooCmdArg& arg4=RooCmdArg(),
const RooCmdArg& arg5=RooCmdArg(),
const RooCmdArg& arg6=RooCmdArg(),
61 const RooCmdArg& arg7=RooCmdArg(),
const RooCmdArg& arg8=RooCmdArg(),
const RooCmdArg& arg9=RooCmdArg()) ;
62 Bool_t
import(
const RooArgSet& args,
63 const RooCmdArg& arg1=RooCmdArg(),
const RooCmdArg& arg2=RooCmdArg(),
const RooCmdArg& arg3=RooCmdArg(),
64 const RooCmdArg& arg4=RooCmdArg(),
const RooCmdArg& arg5=RooCmdArg(),
const RooCmdArg& arg6=RooCmdArg(),
65 const RooCmdArg& arg7=RooCmdArg(),
const RooCmdArg& arg8=RooCmdArg(),
const RooCmdArg& arg9=RooCmdArg()) ;
66 Bool_t
import(RooAbsData& data,
67 const RooCmdArg& arg1=RooCmdArg(),
const RooCmdArg& arg2=RooCmdArg(),
const RooCmdArg& arg3=RooCmdArg(),
68 const RooCmdArg& arg4=RooCmdArg(),
const RooCmdArg& arg5=RooCmdArg(),
const RooCmdArg& arg6=RooCmdArg(),
69 const RooCmdArg& arg7=RooCmdArg(),
const RooCmdArg& arg8=RooCmdArg(),
const RooCmdArg& arg9=RooCmdArg()) ;
70 Bool_t
import(
const char *fileSpec,
71 const RooCmdArg& arg1=RooCmdArg(),
const RooCmdArg& arg2=RooCmdArg(),
const RooCmdArg& arg3=RooCmdArg(),
72 const RooCmdArg& arg4=RooCmdArg(),
const RooCmdArg& arg5=RooCmdArg(),
const RooCmdArg& arg6=RooCmdArg(),
73 const RooCmdArg& arg7=RooCmdArg(),
const RooCmdArg& arg8=RooCmdArg(),
const RooCmdArg& arg9=RooCmdArg()) ;
74 Bool_t
import(TObject& object, Bool_t replaceExisting=kFALSE) ;
75 Bool_t
import(TObject& object,
const char* aliasName, Bool_t replaceExisting=kFALSE) ;
78 Bool_t startTransaction() ;
79 Bool_t cancelTransaction() ;
80 Bool_t commitTransaction() ;
83 Bool_t defineSet(
const char* name,
const RooArgSet& aset, Bool_t importMissing=kFALSE) ;
84 Bool_t defineSet(
const char* name,
const char* contentList) ;
85 Bool_t extendSet(
const char* name,
const char* newContents) ;
86 Bool_t renameSet(
const char* name,
const char* newName) ;
87 Bool_t removeSet(
const char* name) ;
88 const RooArgSet* set(
const char* name) ;
91 Bool_t saveSnapshot(
const char* name,
const char* paramNames) ;
92 Bool_t saveSnapshot(
const char* name,
const RooArgSet& params, Bool_t importValues=kFALSE) ;
93 Bool_t loadSnapshot(
const char* name) ;
94 const RooArgSet* getSnapshot(
const char* name)
const ;
96 void merge(
const RooWorkspace& ) {} ;
103 RooAbsPdf* pdf(
const char* name)
const ;
104 RooAbsReal*
function(
const char* name)
const ;
105 RooRealVar* var(
const char* name)
const ;
106 RooCategory* cat(
const char* name)
const ;
107 RooAbsCategory* catfunc(
const char* name)
const ;
108 RooAbsData* data(
const char* name)
const ;
109 RooAbsData* embeddedData(
const char* name)
const ;
110 RooAbsArg* arg(
const char* name)
const ;
111 RooAbsArg* fundArg(
const char* name)
const ;
112 RooArgSet argSet(
const char* nameList)
const ;
113 TIterator* componentIterator()
const {
return _allOwnedNodes.createIterator() ; }
114 const RooArgSet& components()
const {
return _allOwnedNodes ; }
115 TObject* genobj(
const char* name)
const ;
116 TObject* obj(
const char* name)
const ;
119 RooArgSet allVars()
const;
120 RooArgSet allCats()
const ;
121 RooArgSet allFunctions()
const ;
122 RooArgSet allCatFunctions()
const ;
123 RooArgSet allPdfs()
const ;
124 RooArgSet allResolutionModels()
const ;
125 std::list<RooAbsData*> allData()
const ;
126 std::list<RooAbsData*> allEmbeddedData()
const ;
127 std::list<TObject*> allGenericObjects()
const ;
130 Bool_t cd(
const char* path = 0) ;
132 Bool_t writeToFile(
const char* fileName, Bool_t recreate=kTRUE) ;
134 virtual void RecursiveRemove(TObject *obj);
137 RooFactoryWSTool& factory() ;
138 RooAbsArg* factory(
const char* expr) ;
141 Bool_t addStudy(RooAbsStudy& study) ;
142 TIterator* studyIterator() {
return _studyMods.MakeIterator() ; }
143 void clearStudies() ;
146 void Print(Option_t* opts=0)
const ;
148 static void autoImportClassCode(Bool_t flag) ;
150 static void addClassDeclImportDir(
const char* dir) ;
151 static void addClassImplImportDir(
const char* dir) ;
152 static void setClassFileExportDir(
const char* dir=0) ;
154 const TUUID& uuid()
const {
return _uuid ; }
156 RooExpensiveObjectCache& expensiveObjectCache() {
return _eocache ; }
158 class CodeRepo :
public TObject {
160 CodeRepo(RooWorkspace* wspace=0) : _wspace(wspace), _compiledOK(kTRUE) {} ;
162 CodeRepo(
const CodeRepo& other, RooWorkspace* wspace=0) : TObject(other) ,
163 _wspace(wspace?wspace:other._wspace),
164 _c2fmap(other._c2fmap),
166 _ehmap(other._ehmap),
167 _compiledOK(other._compiledOK) {} ;
169 virtual ~CodeRepo() {} ;
171 Bool_t autoImportClass(TClass* tc, Bool_t doReplace=kFALSE) ;
172 Bool_t compileClasses() ;
174 Bool_t compiledOK()
const {
return _compiledOK ; }
176 std::string listOfClassNames()
const ;
188 ClassFiles() : _extracted(kFALSE) {}
203 RooWorkspace* _wspace ;
204 std::map<TString,ClassRelInfo> _c2fmap ;
205 std::map<TString,ClassFiles> _fmap ;
206 std::map<TString,ExtraHeader> _ehmap ;
209 ClassDef(CodeRepo,2) ;
213 class WSDir :
public TDirectoryFile {
215 WSDir(
const char* name,
const char* title, RooWorkspace* wspace) :
216 TDirectoryFile(name,title,
"RooWorkspace::WSDir",0),
221 virtual ~WSDir() { Clear(
"nodelete") ; } ;
224 virtual void Add(TObject*,Bool_t) ;
225 virtual void Append(TObject*,Bool_t) ;
228 friend class RooWorkspace ;
229 void InternalAppend(TObject* obj) ;
230 RooWorkspace* _wspace ;
237 friend class RooAbsArg;
238 friend class RooAbsPdf;
239 Bool_t defineSetInternal(
const char *name,
const RooArgSet &aset);
241 Bool_t isValidCPPID(
const char *name);
242 void exportObj(TObject *obj);
245 friend class CodeRepo;
246 static std::list<std::string> _classDeclDirList;
247 static std::list<std::string> _classImplDirList;
248 static std::string _classFileExportDir;
252 static Bool_t _autoClass;
256 RooArgSet _allOwnedNodes;
257 RooLinkedList _dataList;
258 RooLinkedList _embeddedDataList;
259 RooLinkedList _views;
260 RooLinkedList _snapshots;
261 RooLinkedList _genObjects;
262 RooLinkedList _studyMods;
263 std::map<std::string, RooArgSet> _namedSets;
267 RooExpensiveObjectCache _eocache;
269 std::unique_ptr<RooFactoryWSTool> _factory;
272 std::string _exportNSName;
275 RooArgSet _sandboxNodes;
277 ClassDef(RooWorkspace, 8)