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)