168  TNamed(other), _uuid(other._uuid), _classes(other._classes,this), _dir(nullptr), _factory(nullptr), _doExport(
kFALSE), _openTrans(
kFALSE)
 
  176  while((data2=iter->
Next())) {
 
  192  for (map<string,RooArgSet>::const_iterator iter3 = other.
_namedSets.begin() ; iter3 != other.
_namedSets.end() ; ++iter3) {
 
  202  while((gobj=iter4->
Next())) {
 
  254  if (tokens.size() != 3) {
 
  255    std::ostringstream stream;
 
  256    for (
const auto& token : tokens) {
 
  257      stream << 
"\n\t" << token;
 
  259    coutE(
InputArguments) << 
"RooWorkspace(" << 
GetName() << 
") ERROR in file specification, expecting 'filename:wsname:objname', but '" << fileSpec << 
"' given." 
  260        << 
"\nTokens read are:" << stream.str() << endl;
 
  264  const std::string& filename = tokens[0];
 
  265  const std::string& wsname = tokens[1];
 
  266  const std::string& objname = tokens[2];
 
  279           << 
" or object is not a RooWorkspace" << endl ;
 
  286    Bool_t ret = 
import(*warg,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
 
  292    Bool_t ret = 
import(*wdata,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
 
  298         << 
" in workspace " << wsname << 
" in file " << filename << endl ;
 
  315  while((oneArg=(
RooAbsArg*)iter->Next())) {
 
  316    ret |= 
import(*oneArg,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
 
  368  pc.defineString(
"conflictSuffix",
"RenameConflictNodes",0) ;
 
  369  pc.defineInt(
"renameConflictOrig",
"RenameConflictNodes",0,0) ;
 
  370  pc.defineString(
"allSuffix",
"RenameAllNodes",0) ;
 
  371  pc.defineString(
"allVarsSuffix",
"RenameAllVariables",0) ;
 
  372  pc.defineString(
"allVarsExcept",
"RenameAllVariables",1) ;
 
  373  pc.defineString(
"varChangeIn",
"RenameVar",0,
"",
kTRUE) ;
 
  374  pc.defineString(
"varChangeOut",
"RenameVar",1,
"",
kTRUE) ;
 
  375  pc.defineString(
"factoryTag",
"FactoryTag",0) ;
 
  376  pc.defineInt(
"useExistingNodes",
"RecycleConflictNodes",0,0) ;
 
  377  pc.defineInt(
"silence",
"Silence",0,0) ;
 
  378  pc.defineInt(
"noRecursion",
"NoRecursion",0,0) ;
 
  379  pc.defineMutex(
"RenameConflictNodes",
"RenameAllNodes") ;
 
  380  pc.defineMutex(
"RenameConflictNodes",
"RecycleConflictNodes") ;
 
  381  pc.defineMutex(
"RenameAllNodes",
"RecycleConflictNodes") ;
 
  382  pc.defineMutex(
"RenameVariable",
"RenameAllVariables") ;
 
  391  const char* suffixC = 
pc.getString(
"conflictSuffix") ;
 
  392  const char* suffixA = 
pc.getString(
"allSuffix") ;
 
  393  const char* suffixV = 
pc.getString(
"allVarsSuffix") ;
 
  394  const char* exceptVars = 
pc.getString(
"allVarsExcept") ;
 
  395  const char* varChangeIn = 
pc.getString(
"varChangeIn") ;
 
  396  const char* varChangeOut = 
pc.getString(
"varChangeOut") ;
 
  397  Bool_t renameConflictOrig = 
pc.getInt(
"renameConflictOrig") ;
 
  398  Int_t useExistingNodes = 
pc.getInt(
"useExistingNodes") ;
 
  399  Int_t silence = 
pc.getInt(
"silence") ;
 
  400  Int_t noRecursion = 
pc.getInt(
"noRecursion") ;
 
  404  if (suffixC && strlen(suffixC)==0) suffixC = 0 ;
 
  405  if (suffixA && strlen(suffixA)==0) suffixA = 0 ;
 
  408  const char* suffix = suffixA ? suffixA : suffixC ;
 
  411  map<string,string> varMap ;
 
  412  if (strlen(varChangeIn)>0) {
 
  417    for (
unsigned int i=0; i < tokIn.size(); ++i) {
 
  418      varMap.insert(std::make_pair(tokIn[i], tokOut[i]));
 
  421    assert(tokIn.size() == tokOut.size());
 
  426  std::set<string> exceptVarNames ;
 
  427  if (exceptVars && strlen(exceptVars)) {
 
  429    exceptVarNames.insert(toks.begin(), toks.end());
 
  432  if (suffixV != 0 && strlen(suffixV)>0) {
 
  437      if (exceptVarNames.find(
v->GetName())==exceptVarNames.end()) {
 
  438   varMap[
v->GetName()] = 
Form(
"%s_%s",
v->GetName(),suffixV) ;
 
  451  Bool_t factoryMatch = (tagIn && tagWs && !strcmp(tagIn,tagWs)) ;
 
  453    ((
RooAbsArg&)inArg).setAttribute(
"RooWorkspace::Recycle") ;
 
  456  if (!suffix && wsarg && !useExistingNodes && !(inArg.
isFundamental() && varMap[inArg.
GetName()]!=
"")) {
 
  460               << 
": another instance with same name already in the workspace and no conflict resolution protocol specified" << endl ;
 
  469      coutI(
ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") Recycling existing object " << inArg.
GetName() << 
" created with identical factory specification" << endl ;
 
  477    branchSet.
add(inArg) ;
 
  485    if (wsbranch && wsbranch!=branch && !branch->
getAttribute(
"RooWorkspace::Recycle") && !useExistingNodes) {
 
  486      conflictNodes.
add(*branch) ;
 
  492  if (conflictNodes.
getSize()>0 && !suffix && !useExistingNodes) {
 
  494      << conflictNodes << 
" already in the workspace and no conflict resolution protocol specified" << endl ;      
 
  505    conflictNodes.
add(branchSet) ;
 
  509  string topName2 = cloneTop->
GetName() ;
 
  510  if (!renameConflictOrig) {
 
  516      string origName = cnode2->
GetName() ;
 
  519      string tag = 
Form(
"ORIGNAME:%s",origName.c_str()) ;
 
  522   string tag2 = 
Form(
"%s",origName.c_str()) ;
 
  527      if (cnode2==cloneTop) {
 
  533               << 
") Resolving name conflict in workspace by changing name of imported node  "  
  534               << origName << 
" to " << cnode2->
GetName() << endl ;
 
  545      string origName = cnode->
GetName() ;
 
  560       string newname = 
Form(
"%s_%s_%d",cnode->
GetName(),suffix,
n) ;
 
  562         wsnode->
SetName(newname.c_str()) ;
 
  571            << 
") Resolving name conflict in workspace by changing name of original node "  
  572            << origName << 
" to " << wsnode->
GetName() << endl ;
 
  576               << origName << 
" to be renamed, but didn't find it..." << endl ;
 
  585  if (strlen(varChangeIn)>0 || (suffixV && strlen(suffixV)>0)) {
 
  592      if (varMap.find(cnode->
GetName())!=varMap.end()) {    
 
  593   string origName = cnode->
GetName() ;
 
  595   string tag = 
Form(
"ORIGNAME:%s",origName.c_str()) ;
 
  598     string tag2 = 
Form(
"%s",origName.c_str()) ;
 
  604            << origName << 
" to " << cnode->
GetName() << 
" on request" << endl ;
 
  607   if (cnode==cloneTop) {
 
  628      conflictNodes2.
add(*branch2) ;
 
  634  if (conflictNodes2.
getSize()) {
 
  636           << conflictNodes2 << 
" cause naming conflict after conflict resolution protocol was executed" << endl ;      
 
  648             << 
" has an error in importing in one or more of its auxiliary objects, aborting" << endl ;
 
  663               << node->IsA()->
GetName() << 
"::" << node->
GetName() << 
", reading of workspace will require external definition of class" << endl ;
 
  677      if (!silence && useExistingNodes) {
 
  679               << 
"::" << node->
GetName() << 
" for import of " << cloneTop2->IsA()->
GetName() << 
"::"  
  680               << cloneTop2->
GetName() << endl ;      
 
  721  if (recycledNodes.
getSize()>0) {
 
  768  pc.defineString(
"dsetName",
"Rename",0,
"") ;
 
  769  pc.defineString(
"varChangeIn",
"RenameVar",0,
"",
kTRUE) ;
 
  770  pc.defineString(
"varChangeOut",
"RenameVar",1,
"",
kTRUE) ;
 
  771  pc.defineInt(
"embedded",
"Embedded",0,0) ;
 
  772  pc.defineInt(
"silence",
"Silence",0,0) ;
 
  781  const char* dsetName = 
pc.getString(
"dsetName") ;
 
  782  const char* varChangeIn = 
pc.getString(
"varChangeIn") ;
 
  783  const char* varChangeOut = 
pc.getString(
"varChangeOut") ;
 
  784  Bool_t embedded = 
pc.getInt(
"embedded") ;
 
  785  Int_t silence = 
pc.getInt(
"silence") ;
 
  791  if (dsetName && strlen(dsetName)==0) {
 
  798  if (dsetName && dataList.
FindObject(dsetName)) {
 
  799    coutE(
ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") ERROR dataset with name " << dsetName << 
" already exists in workspace, import aborted" << endl ;
 
  803    coutE(
ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") ERROR dataset with name " << inData.
GetName() << 
" already exists in workspace, import aborted" << endl ;
 
  819  if (strlen(varChangeIn)>0) {
 
  823    for (
unsigned int i=0; i < tokIn.size(); ++i) {
 
  825        coutI(
ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") changing name of dataset observable " << tokIn[i] << 
" to " << tokOut[i] << endl ;
 
  842  dataList.
Add(clone) ;
 
  852  while ((carg=iter2.
next())) {
 
  888               << 
"\" is not in workspace and importMissing option is disabled" << endl ;
 
  914                            << 
") WARNING redefining previously defined named set " << 
name << endl;
 
  941    if (!
arg(token.c_str())) {
 
  943             << 
"\" is not in workspace" << endl ;
 
  946    wsargs.
add(*
arg(token.c_str())) ;
 
  970    if (!
arg(token.c_str())) {
 
  972             << 
"\" is not in workspace" << endl ;
 
  975    wsargs.
add(*
arg(token.c_str())) ;
 
  993  return (i!=
_namedSets.end()) ? &(i->second) : 0 ;
 
 1007           << 
" does not exist" << endl ;
 
 1014           << 
" already exists" << endl ;
 
 1038           << 
" does not exist" << endl ;
 
 1158             << carg->IsA()->
GetName() << 
"::" << carg->
GetName() << 
", reading of workspace will require external definition of class" << endl ;
 
 1194  delete actualParams ;
 
 1199    *snapshot = params ;
 
 1230  *actualParams = *snap ;
 
 1231  delete actualParams ;
 
 1355      coutE(
InputArguments) << 
" RooWorkspace::argSet(" << 
GetName() << 
") no RooAbsArg named \"" << token << 
"\" in workspace" << endl ;
 
 1532  list<RooAbsData*> ret ;
 
 1536    ret.push_back(dat) ;
 
 1548  list<RooAbsData*> ret ;
 
 1552    ret.push_back(dat) ;
 
 1565  list<TObject*> ret ;
 
 1574      ret.push_back(gobj) ;
 
 1607  if (mapEntry && strlen(mapEntry)>0) {
 
 1617  if (implfile.empty() || declfile.empty()) {
 
 1619               << tc->
GetName() << 
" through ROOT TClass interface, unable to import code" << endl ;
 
 1629  const char* implpath=0 ;
 
 1636                << tc->
GetName() << 
" : it cannot be persisted because it doesn't have a default constructor. Please fix " << endl ;
 
 1643  char* declpath = 0 ;
 
 1669                  << tc->
GetName() << 
" because header file " << declfile << 
" is not found in current directory nor in $ROOTSYS" ;
 
 1684                   << 
"path using RooWorkspace::addClassDeclImportDir(const char* dir)" << endl ;
 
 1715                  << tc->
GetName() << 
" because implementation file " << implfile << 
" is not found in current directory nor in $ROOTSYS" ;
 
 1730                   << 
"path using RooWorkspace::addClassImplImportDir(const char* dir)" << endl ;    
 
 1751  int dotpos2 = strrchr(declfilename.c_str(),
'.') - declfilename.c_str() ;
 
 1752  string declfilebase = declfilename.substr(0,dotpos2) ;
 
 1753  string declfileext = declfilename.substr(dotpos2+1) ;
 
 1755  list<string> extraHeaders ;
 
 1758  if (
_fmap.find(declfilebase) == 
_fmap.end()) {
 
 1761    fstream fdecl(declpath?declpath:declfile.c_str()) ;
 
 1766                  << 
") ERROR opening declaration file " <<  declfile << endl ;
 
 1771                << 
") importing code of class " << tc->
GetName() 
 
 1772                << 
" from " << (implpath?implpath:implfile.c_str()) 
 
 1773                << 
" and " << (declpath?declpath:declfile.c_str()) << endl ;
 
 1778    while(fdecl.getline(buf,1023)) {
 
 1782      char* extincfile = 0 ;
 
 1785      if (strstr(buf,
"#include")) {
 
 1788   strlcpy(tmp, buf, 64000);
 
 1789   Bool_t stdinclude = strchr(buf, 
'<');
 
 1790   strtok(tmp, 
" <\"");
 
 1791   char *incfile = strtok(0, 
" <>\"");
 
 1796      hpath += 
"/include/";
 
 1800                                          << 
") scheduling include file " << incfile << 
" for import" << endl;
 
 1801         extraHeaders.push_back(incfile);
 
 1802         extincfile = incfile;
 
 1803         processedInclude = 
kTRUE;
 
 1808      if (processedInclude) {
 
 1809   decl += 
"// external include file below retrieved from workspace code storage\n" ;
 
 1810   decl += 
Form(
"#include \"%s\"\n",extincfile) ; 
 
 1818    fstream fimpl(implpath?implpath:implfile.c_str()) ;
 
 1823                  << 
") ERROR opening implementation file " <<  implfile << endl ;
 
 1830    while(fimpl.getline(buf,1023)) {
 
 1836      char* extincfile = 0 ;
 
 1839      if (strstr(buf,
"#include")) {
 
 1842   strlcpy(tmp, buf, 64000);
 
 1843   Bool_t stdinclude = strchr(buf, 
'<');
 
 1844   strtok(tmp, 
" <\"");
 
 1845   char *incfile = strtok(0, 
" <>\"");
 
 1847   if (strstr(incfile, declfilename.c_str())) {
 
 1848      foundSelfInclude = 
kTRUE;
 
 1851   if (!stdinclude && !foundSelfInclude) {
 
 1854      hpath += 
"/include/";
 
 1859                                          << 
") scheduling include file " << incfile << 
" for import" << endl;
 
 1860         extraHeaders.push_back(incfile);
 
 1861         extincfile = incfile;
 
 1862         processedInclude = 
kTRUE;
 
 1869      if (foundSelfInclude) {
 
 1872   impl += 
"// class declaration include file below retrieved from workspace code storage\n" ;
 
 1873   impl += 
Form(
"#include \"%s.%s\"\n",declfilebase.c_str(),declfileext.c_str()) ;
 
 1874      } 
else if (processedInclude) {
 
 1875   impl += 
"// external include file below retrieved from workspace code storage\n" ;
 
 1876   impl += 
Form(
"#include \"%s\"\n",extincfile) ; 
 
 1884    _fmap[declfilebase]._hfile = decl ;
 
 1885    _fmap[declfilebase]._cxxfile = impl ;   
 
 1886    _fmap[declfilebase]._hext = declfileext ;
 
 1889    for (list<string>::iterator ehiter = extraHeaders.begin() ; ehiter != extraHeaders.end() ; ++ehiter ) {
 
 1893   eh.
_hname = ehiter->c_str() ;
 
 1894   fstream fehdr(ehiter->c_str()) ;
 
 1897   while(fehdr.getline(buf2,1023)) {     
 
 1900     if (strstr(buf2,
"#include")) {
 
 1903       strlcpy(tmp, buf2, 64000);
 
 1904       Bool_t stdinclude = strchr(buf, 
'<');
 
 1905       strtok(tmp, 
" <\"");
 
 1906       char *incfile = strtok(0, 
" <>\"");
 
 1911          hpath += 
"/include/";
 
 1915                                              << 
") scheduling recursive include file " << incfile << 
" for import" 
 1917             extraHeaders.push_back(incfile);
 
 1925   eh.
_hfile = ehimpl.c_str();
 
 1927   _ehmap[ehiter->c_str()] = eh;
 
 1935                << 
") code of class " << tc->
GetName() 
 
 1936                << 
" was already imported from " << (implpath?implpath:implfile.c_str()) 
 
 1937                << 
" and " << (declpath?declpath:declfile.c_str()) << endl ;
 
 1952  list<TClass*> bases ;
 
 1954    if (baseNameList.
Length()>0) {
 
 1955      baseNameList += 
"," ;
 
 1967  list<TClass*>::iterator biter = bases.begin() ;
 
 1968  while(biter!=bases.end()) {
 
 2027  if (oldObj && !replaceExisting) {
 
 2029           << 
object.GetName() << 
" is already in workspace and replaceExisting flag is set to false" << endl ;
 
 2035  object.IsA()->SetDirectoryAutoAdd(0);
 
 2046  object.IsA()->SetDirectoryAutoAdd(func);
 
 2068  if (oldObj && !replaceExisting) {
 
 2070           << 
object.GetName() << 
" is already in workspace and replaceExisting flag is set to false" << endl ;
 
 2124  if (ret) 
return ret ;
 
 2128  if (ret) 
return ret ;
 
 2145  if (!gobj) 
return 0 ;
 
 2170  TFile f(fileName,recreate?
"RECREATE":
"UPDATE") ;
 
 2185  cxcoutD(
ObjectHandling) << 
"INFO: Creating RooFactoryWSTool associated with this workspace" << endl ;
 
 2186  _factory = make_unique<RooFactoryWSTool>(*
this);
 
 2211  if (
TString(opts).Contains(
"t")) {
 
 2214  if (
TString(opts).Contains(
"v")) {
 
 2218  cout << endl << 
"RooWorkspace(" << 
GetName() << 
") " << 
GetTitle() << 
" contents" << endl << endl  ;
 
 2251     funcSet.
add(*parg) ;
 
 2259     catfuncSet.
add(*parg) ;
 
 2267     convResoSet.
add(*parg) ;
 
 2269     resoSet.
add(*parg) ;
 
 2282   funcSet.
add(*parg) ;
 
 2287   catfuncSet.
add(*parg) ;
 
 2308    cout << 
"variables" << endl ;
 
 2309    cout << 
"---------" << endl ;
 
 2310    cout << varSet << endl ;
 
 2315    cout << 
"p.d.f.s" << endl ;
 
 2316    cout << 
"-------" << endl ;
 
 2332      cout << 
"analytical resolution models" << endl ;
 
 2333      cout << 
"----------------------------" << endl ;
 
 2350    cout << 
"functions" << endl ;
 
 2351    cout << 
"--------" << endl ;
 
 2366    cout << 
"category functions" << endl ;
 
 2367    cout << 
"------------------" << endl ;
 
 2382    cout << 
"datasets" << endl ;
 
 2383    cout << 
"--------" << endl ;
 
 2387      cout << data2->IsA()->
GetName() << 
"::" << data2->
GetName() << *data2->
get() << endl ;
 
 2394    cout << 
"embedded datasets (in pdfs and functions)" << endl ;
 
 2395    cout << 
"-----------------------------------------" << endl ;
 
 2399      cout << data2->IsA()->
GetName() << 
"::" << data2->
GetName() << *data2->
get() << endl ;
 
 2406    cout << 
"parameter snapshots" << endl ;
 
 2407    cout << 
"-------------------" << endl ;
 
 2411      cout << snap->
GetName() << 
" = (" ;
 
 2417   cout << 
a->GetName() << 
"=" ; 
 
 2418   a->printValue(cout) ;
 
 2419   if (
a->isConstant()) {
 
 2423      cout << 
")" << endl ;
 
 2432    cout << 
"named sets" << endl ;
 
 2433    cout << 
"----------" << endl ;
 
 2434    for (map<string,RooArgSet>::const_iterator it = 
_namedSets.begin() ; it != 
_namedSets.end() ; ++it) {
 
 2436          cout << it->first << 
":" << it->second << endl;
 
 2445    cout << 
"generic objects" << endl ;
 
 2446    cout << 
"---------------" << endl ;
 
 2451   cout << ((
RooTObjWrap*)gobj)->obj()->IsA()->
GetName() << 
"::" << gobj->GetName() << endl ;
 
 2453   cout << gobj->IsA()->
GetName() << 
"::" << gobj->
GetName() << endl ;
 
 2462    cout << 
"study modules" << endl ;
 
 2463    cout << 
"-------------" << endl ;
 
 2467      cout << smobj->IsA()->
GetName() << 
"::" << smobj->
GetName() << endl ;
 
 2475    cout << 
"embedded class code" << endl ;
 
 2476    cout << 
"-------------------" << endl ;    
 
 2482    cout << 
"embedded precalculated expensive components" << endl ;
 
 2483    cout << 
"-------------------------------------------" << endl ;
 
 2499void RooWorkspace::CodeRepo::Streamer(
TBuffer &R__b)
 
 2514       name.Streamer(R__b) ;       
 
 2515       _fmap[
name]._hext.Streamer(R__b) ;
 
 2516       _fmap[
name]._hfile.Streamer(R__b) ;
 
 2517       _fmap[
name]._cxxfile.Streamer(R__b) ;    
 
 2525       name.Streamer(R__b) ;       
 
 2526       _c2fmap[
name]._baseName.Streamer(R__b) ;
 
 2527       _c2fmap[
name]._fileBase.Streamer(R__b) ;
 
 2536    name.Streamer(R__b) ;       
 
 2537    _ehmap[
name]._hname.Streamer(R__b) ;
 
 2538    _ehmap[
name]._hfile.Streamer(R__b) ;
 
 2545     _compiledOK = !compileClasses() ;
 
 2553     UInt_t count = _fmap.size() ;
 
 2555     map<TString,ClassFiles>::iterator iter = _fmap.begin() ;
 
 2556     while(iter!=_fmap.end()) {       
 
 2557       TString key_copy(iter->first) ;
 
 2558       key_copy.Streamer(R__b) ;
 
 2559       iter->second._hext.Streamer(R__b) ;
 
 2560       iter->second._hfile.Streamer(R__b);
 
 2561       iter->second._cxxfile.Streamer(R__b);
 
 2567     count = _c2fmap.size() ;
 
 2569     map<TString,ClassRelInfo>::iterator iter2 = _c2fmap.begin() ;
 
 2570     while(iter2!=_c2fmap.end()) {
 
 2571       TString key_copy(iter2->first) ;
 
 2572       key_copy.Streamer(R__b) ;
 
 2573       iter2->second._baseName.Streamer(R__b) ;
 
 2574       iter2->second._fileBase.Streamer(R__b);
 
 2579     count = _ehmap.size() ;
 
 2581     map<TString,ExtraHeader>::iterator iter3 = _ehmap.begin() ;
 
 2582     while(iter3!=_ehmap.end()) {
 
 2583       TString key_copy(iter3->first) ;
 
 2584       key_copy.Streamer(R__b) ;
 
 2585       iter3->second._hname.Streamer(R__b) ;
 
 2586       iter3->second._hfile.Streamer(R__b);
 
 2604void RooWorkspace::Streamer(
TBuffer &R__b)
 
 2613      while((node=fiter.
next())) {
 
 2627         cout << 
"RooWorkspace::Streamer(" << 
GetName() << 
") " << node->IsA()->
GetName() << 
"::" << node->
GetName()
 
 2639     map<RooAbsArg*,vector<RooAbsArg *> > extClients, extValueClients, extShapeClients ;
 
 2647       for (
auto client : clientsTmp) {
 
 2651           auto& bufferVec = extClients[tmparg];
 
 2653           bufferVec.insert(bufferVec.end(), refCount, client);
 
 2660       for (
auto vclient : clientsTmp) {
 
 2663                   << 
" has external value client link to " << vclient << 
" (" << vclient->GetName() << 
") with ref count " << tmparg->
_clientListValue.
refCount(vclient) << endl ;
 
 2666           auto& bufferVec = extValueClients[tmparg];
 
 2668           bufferVec.insert(bufferVec.end(), refCount, vclient);
 
 2675       for (
auto sclient : clientsTmp) {
 
 2678                     << 
" has external shape client link to " << sclient << 
" (" << sclient->GetName() << 
") with ref count " << tmparg->
_clientListShape.
refCount(sclient) << endl ;
 
 2681           auto& bufferVec = extShapeClients[tmparg];
 
 2683           bufferVec.insert(bufferVec.end(), refCount, sclient);
 
 2696     for (
auto iterx : extClients) {
 
 2697       for (
auto client : iterx.second) {
 
 2698         iterx.first->_clientList.Add(client);
 
 2702     for (
auto iterx : extValueClients) {
 
 2703       for (
auto client : iterx.second) {
 
 2704         iterx.first->_clientListValue.Add(client);
 
 2708     for (
auto iterx : extShapeClients) {
 
 2709       for (
auto client : iterx.second) {
 
 2710         iterx.first->_clientListShape.Add(client);
 
 2726  map<TString,ClassRelInfo>::const_iterator iter = _c2fmap.begin() ;
 
 2727  while(iter!=_c2fmap.end()) {
 
 2731    ret += iter->first ;    
 
 2744  static const UInt_t crctab[256] = { 0x00000000,
 
 2745    0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
 
 2746    0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
 
 2747    0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
 
 2748    0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
 
 2749    0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
 
 2750    0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
 
 2751    0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
 
 2752    0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
 
 2753    0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
 
 2754    0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
 
 2755    0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
 
 2756    0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
 
 2757    0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
 
 2758    0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
 
 2759    0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
 
 2760    0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
 
 2761    0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
 
 2762    0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
 
 2763    0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
 
 2764    0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
 
 2765    0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
 
 2766    0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
 
 2767    0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
 
 2768    0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
 
 2769    0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
 
 2770    0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
 
 2771    0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
 
 2772    0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
 
 2773    0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
 
 2774    0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
 
 2775    0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
 
 2776    0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
 
 2777    0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
 
 2778    0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
 
 2779    0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
 
 2780    0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
 
 2781    0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
 
 2782    0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
 
 2783    0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
 
 2784    0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
 
 2785    0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
 
 2786    0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
 
 2787    0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
 
 2788    0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
 
 2789    0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
 
 2790    0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
 
 2791    0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
 
 2792    0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
 
 2793    0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
 
 2794    0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
 
 2795    0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
 
 2799  while (sz--) crc = (crc << 8) ^ 
UInt_t(*
data++) ^ crctab[crc >> 24];
 
 2807  unsigned long sz = strlen(
data);
 
 2808  switch (strlen(
data)) {
 
 2820      return crc32(
data + 4, sz - 4, (
data[0] << 24) | (
data[1] << 16) |
 
 2846  map<TString,ClassRelInfo>::iterator iter = _c2fmap.begin() ;
 
 2847  while(iter!=_c2fmap.end()) {
 
 2849    oocxcoutD(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() now processing class " << iter->first.Data() << endl ;
 
 2854                  << iter->first << 
" already in ROOT class table, skipping" << endl ;
 
 2864   oocoutI(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() reusing code export directory " << dirName.c_str() 
 
 2865               << 
" to extract coded embedded in workspace" << endl ;
 
 2868     oocoutI(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() creating code export directory " << dirName.c_str() 
 
 2869                 << 
" to extract coded embedded in workspace" << endl ;
 
 2871     oocoutE(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR creating code export directory " << dirName.c_str() 
 
 2872                 << 
" to extract coded embedded in workspace" << endl ;
 
 2881    if (!writeExtraHeaders) {      
 
 2882      writeExtraHeaders = 
kTRUE ;
 
 2884      map<TString,ExtraHeader>::iterator eiter = _ehmap.begin() ;
 
 2885      while(eiter!=_ehmap.end()) {
 
 2889   string fdname = 
Form(
"%s/%s",dirName.c_str(),eiter->second._hname.Data()) ;
 
 2890   ifstream ifdecl(fdname.c_str()) ;
 
 2894     while (ifdecl.getline(buf, 64000)) {
 
 2899     UInt_t crcWS = crc32(eiter->second._hfile.Data());
 
 2900     needEHWrite = (crcFile != crcWS);
 
 2905      oocoutI(_wspace, 
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting extra header file " 
 2911      ofstream fdecl(fdname.c_str());
 
 2913         oocoutE(_wspace, 
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR opening file " << fdname
 
 2914                                          << 
" for writing" << endl;
 
 2917      fdecl << eiter->second._hfile.Data();
 
 2926    ClassFiles& cfinfo = _fmap[iter->second._fileBase] ;
 
 2928    oocxcoutD(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() now processing file with base " << iter->second._fileBase << endl ;
 
 2932      oocxcoutD(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() file with base name " << iter->second._fileBase 
 
 2933                << 
" has already been extracted, skipping to next class" << endl ;
 
 2939    string fdname = 
Form(
"%s/%s.%s",dirName.c_str(),iter->second._fileBase.Data(),cfinfo.
_hext.
Data()) ;
 
 2940    ifstream ifdecl(fdname.c_str()) ;
 
 2944      while (ifdecl.getline(buf, 64000)) {
 
 2950      needDeclWrite = (crcFile!=crcWS) ;
 
 2954    if (needDeclWrite) {
 
 2955      oocoutI(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting declaration code of class " << iter->first << 
", file " << fdname << endl ;
 
 2956      ofstream fdecl(fdname.c_str()) ;
 
 2959               << fdname << 
" for writing" << endl ;
 
 2968    string finame = 
Form(
"%s/%s.cxx",dirName.c_str(),iter->second._fileBase.Data()) ;
 
 2969    ifstream ifimpl(finame.c_str()) ;
 
 2973      while (ifimpl.getline(buf, 64000)) {
 
 2979      needImplWrite = (crcFile!=crcWS) ;
 
 2983    if (needImplWrite) {
 
 2984      oocoutI(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting implementation code of class " << iter->first << 
", file " << finame << endl ;
 
 2985      ofstream fimpl(finame.c_str()) ;
 
 2988               << finame << 
" for writing" << endl ;
 
 2997    oocxcoutD(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() marking code unit  " << iter->second._fileBase << 
" as extracted" << endl ;
 
 3000    oocoutI(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Compiling code unit " << iter->second._fileBase.Data() << 
" to define class " << iter->first << endl ;
 
 3004      oocoutE(_wspace,
ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR compiling class " << iter->first.Data() << 
", to fix this you can do the following: " << endl 
 
 3005                  << 
"  1) Fix extracted source code files in directory " << dirName.c_str() << 
"/" << endl 
 
 3006                  << 
"  2) In clean ROOT session compiled fixed classes by hand using '.x " << dirName.c_str() << 
"/ClassName.cxx+'" << endl
 
 3007                  << 
"  3) Reopen file with RooWorkspace with broken source code in UPDATE mode. Access RooWorkspace to force loading of class" << endl
 
 3008                  << 
"     Broken instances in workspace will _not_ be compiled, instead precompiled fixed instances will be used." << endl
 
 3009                  << 
"  4) Reimport fixed code in workspace using 'RooWorkspace::importClassCode(\"*\",kTRUE)' method, Write() updated workspace to file and close file" << endl
 
 3010                  << 
"  5) Reopen file in clean ROOT session to confirm that problems are fixed" << endl ;
 
 3037    coutE(
ObjectHandling) << 
"RooWorkspace::WSDir::Add(" << 
GetName() << 
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
 
 3039    InternalAppend(
obj) ;
 
 3050    coutE(
ObjectHandling) << 
"RooWorkspace::WSDir::Add(" << 
GetName() << 
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
 
 3052    InternalAppend(
obj) ;
 
 3066    coutE(
ObjectHandling) << 
"RooWorkspace::exportToCint(" << 
GetName() << 
") WARNING: repeated calls to exportToCint() have no effect" << endl ;
 
 3074  if (!nsname) nsname = 
GetName() ;
 
 3078         << 
") INFO: references to all objects in this workspace will be created in CINT in 'namespace " << 
_exportNSName << 
"'" << endl ;
 
 3083  while((wobj=iter->
Next())) {
 
 3088  while((wobj=iter->
Next())) {
 
 3113    cxcoutD(
ObjectHandling) << 
"RooWorkspace::exportObj(" << 
GetName() << 
") INFO: Workspace object name " << wobj->
GetName() << 
" is not a valid C++ identifier and is not exported to CINT" << endl ;
 
 3119  gROOT->ProcessLine(cintExpr.c_str()) ;  
 
 3129  string oname(
name) ;
 
 3130  if (isdigit(oname[0])) {
 
 3133    for (
UInt_t i=0 ; i<oname.size() ; i++) {
 
 3135      if (!isalnum(
c) && (
c!=
'_')) {
 
 3151   while ((wobj = iter->
Next())) {
 
 3167   if (removedObj == 
_dir) 
_dir = 
nullptr;
 
 3179      c.second.RecursiveRemove(removedObj);
 
R__EXTERN TClassTable * gClassTable
 
char * Form(const char *fmt,...)
 
R__EXTERN TSystem * gSystem
 
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
 
RooExpensiveObjectCache & expensiveObjectCache() const
 
virtual Bool_t importWorkspaceHook(RooWorkspace &ws)
 
Bool_t redirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t isRecursionStep=kFALSE)
Substitute our servers with those listed in newSet.
 
void setStringAttribute(const Text_t *key, const Text_t *value)
Associate string 'value' to this object under key 'key'.
 
static void ioStreamerPass2Finalize()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
 
void setWorkspace(RooWorkspace &ws)
 
void printComponentTree(const char *indent="", const char *namePat=0, Int_t nLevel=999)
Print tree structure of expression tree on given ostream, only branch nodes are printed.
 
virtual void setExpensiveObjectCache(RooExpensiveObjectCache &cache)
 
virtual Bool_t isFundamental() const
Is this object a fundamental type that can be added to a dataset? Fundamental-type subclasses overrid...
 
RefCountList_t _clientListValue
 
virtual void Print(Option_t *options=0) const
Print the object to the defaultPrintStream().
 
const Text_t * getStringAttribute(const Text_t *key) const
Get string attribute mapped under key 'key'.
 
void setAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
 
Bool_t hasClients() const
 
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
 
virtual void ioStreamerPass2()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
 
RefCountList_t _clientListShape
 
Bool_t getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
 
RefCountList_t _clientList
 
void branchNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with all branch nodes of the arg tree starting with ourself as top node.
 
void SetName(const char *name)
Set the name of the TNamed.
 
RooAbsCategory is the common abstract base class for objects that represent a discrete value with a f...
 
RooFIter fwdIterator() const R__SUGGEST_ALTERNATIVE("begin()
One-time forward iterator.
 
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
 
Bool_t containsInstance(const RooAbsArg &var) const
 
void setHashTableSize(Int_t)
 
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
 
void sort(Bool_t reverse=false)
Sort collection using std::sort and name comparison.
 
const char * GetName() const
Returns name of object.
 
TIterator * createIterator(Bool_t dir=kIterForward) const R__SUGGEST_ALTERNATIVE("begin()
TIterator-style iteration over contained elements.
 
void setName(const char *name)
 
virtual void RecursiveRemove(TObject *obj)
If one of the TObject we have a referenced to is deleted, remove the reference.
 
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
 
RooAbsArg * find(const char *name) const
Find object with given name in list.
 
RooAbsData is the common abstract base class for binned and unbinned datasets.
 
virtual const RooArgSet * get() const
 
virtual Bool_t changeObservableName(const char *from, const char *to)
 
RooAbsOptTestStatistic is the abstract base class for test statistics objects that evaluate a functio...
 
const char * sealNotice() const
 
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
 
RooAbsStudy is an abstract base class for RooStudyManager modules.
 
TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
 
virtual Bool_t addOwned(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling addOwned() for each element in the source...
 
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
 
RooCategory represents a fundamental (non-derived) discrete value object.
 
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
 
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
 
RooExpensiveObjectCache is a singleton class that serves as repository for objects that are expensive...
 
void importCacheObjects(RooExpensiveObjectCache &other, const char *ownerName, Bool_t verbose=kFALSE)
 
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
 
RooAbsArg * next()
Return next element or nullptr if at end.
 
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
 
TObject * FindObject(const char *name) const
Return pointer to obejct with given name.
 
TIterator * MakeIterator(Bool_t forward=kTRUE) const
Create a TIterator for this list.
 
void Delete(Option_t *o=0)
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
 
TObject * find(const char *name) const
Return pointer to object with given name in collection.
 
virtual void RecursiveRemove(TObject *obj)
If one of the TObject we have a referenced to is deleted, remove the reference.
 
virtual void Add(TObject *arg)
 
Bool_t Replace(const TObject *oldArg, const TObject *newArg)
Replace object 'oldArg' in collection with new object 'newArg'.
 
virtual Bool_t Remove(TObject *arg)
Remove object from collection.
 
static RooMsgService & instance()
Return reference to singleton instance.
 
void setGlobalKillBelow(RooFit::MsgLevel level)
 
RooFit::MsgLevel globalKillBelow() const
 
static Bool_t setAddDirectoryStatus(Bool_t flag)
 
RooRealVar represents a variable that can be changed from the outside.
 
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
 
std::size_t refCount(typename Container_t::const_iterator item) const
Return ref count of item that iterator points to.
 
void Remove(const T *obj, bool force=false)
Decrease ref count of given object.
 
Container_t::const_iterator begin() const
Iterator over contained objects.
 
Container_t::const_iterator end() const
End of contained objects.
 
RooInt is a minimal implementation of a TNamed holding a TObject.
 
void setOwning(Bool_t flag)
 
An interface to set and retrieve a workspace.
 
virtual void ReplaceWS(RooWorkspace *ws)=0
Set the workspace irrespective of what the previous workspace is.
 
Bool_t autoImportClass(TClass *tc, Bool_t doReplace=kFALSE)
Import code of class 'tc' into the repository.
 
std::map< TString, ExtraHeader > _ehmap
 
std::string listOfClassNames() const
Return STL string with last of class names contained in the code repository.
 
std::map< TString, ClassRelInfo > _c2fmap
 
Bool_t compileClasses()
For all classes in the workspace for which no class definition is found in the ROOT class table extra...
 
std::map< TString, ClassFiles > _fmap
 
virtual void Append(TObject *, Bool_t)
Overload TDirectory interface method to prohibit insertion of objects in read-only directory workspac...
 
void InternalAppend(TObject *obj)
Internal access to TDirectory append method.
 
virtual void Add(TObject *, Bool_t)
Overload TDirectory interface method to prohibit insertion of objects in read-only directory workspac...
 
The RooWorkspace is a persistable container for RooFit projects.
 
Bool_t makeDir()
Create transient TDirectory representation of this workspace.
 
RooExpensiveObjectCache _eocache
Transient ROOT directory representation of workspace.
 
RooLinkedList _genObjects
 
void exportToCint(const char *namespaceName=0)
Activate export of workspace symbols to CINT in a namespace with given name.
 
std::string _exportNSName
Export contents of workspace to CINT?
 
static std::list< std::string > _classDeclDirList
 
const RooArgSet * getSnapshot(const char *name) const
Return the RooArgSet containing a snapshot of variables contained in the workspace.
 
Bool_t extendSet(const char *name, const char *newContents)
Define a named set in the work space through a comma separated list of names of objects already in th...
 
static void addClassDeclImportDir(const char *dir)
Add dir to search path for class declaration (header) files.
 
Bool_t defineSetInternal(const char *name, const RooArgSet &aset)
 
void unExport()
Delete exported reference in CINT namespace.
 
RooAbsData * data(const char *name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
 
RooAbsData * embeddedData(const char *name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
 
static void addClassImplImportDir(const char *dir)
Add dir to search path for class implementation (.cxx) files.
 
TObject * genobj(const char *name) const
Return generic object with given name.
 
std::map< std::string, RooArgSet > _namedSets
 
Bool_t _openTrans
Name of CINT namespace to which contents are exported.
 
std::list< RooAbsData * > allData() const
Return list of all dataset in the workspace.
 
void clearStudies()
Remove all RooStudyManager modules.
 
RooAbsArg * fundArg(const char *name) const
Return fundamental (i.e.
 
RooArgSet argSet(const char *nameList) const
Return set of RooAbsArgs matching to given list of names.
 
std::unique_ptr< RooFactoryWSTool > _factory
 
RooArgSet allVars() const
Return set with all variable objects.
 
virtual void RecursiveRemove(TObject *obj)
If one of the TObject we have a referenced to is deleted, remove the reference.
 
RooArgSet allCats() const
Return set with all category objects.
 
Bool_t commitTransaction()
 
Bool_t startTransaction()
Open an import transaction operations.
 
RooAbsReal * function(const char *name) const
Retrieve function (RooAbsReal) with given name. Note that all RooAbsPdfs are also RooAbsReals....
 
RooArgSet allResolutionModels() const
Return set with all resolution model objects.
 
Bool_t importClassCode(const char *pat="*", Bool_t doReplace=kFALSE)
Inport code of all classes in the workspace that have a class name that matches pattern 'pat' and whi...
 
RooCategory * cat(const char *name) const
Retrieve discrete variable (RooCategory) with given name. A null pointer is returned if not found.
 
Bool_t renameSet(const char *name, const char *newName)
Rename set to a new name.
 
RooAbsArg * arg(const char *name) const
Return RooAbsArg with given name. A null pointer is returned if none is found.
 
std::list< RooAbsData * > allEmbeddedData() const
Return list of all dataset in the workspace.
 
void Print(Option_t *opts=0) const
Print contents of the workspace.
 
RooArgSet allPdfs() const
Return set with all probability density function objects.
 
Bool_t addStudy(RooAbsStudy &study)
Insert RooStudyManager module.
 
Bool_t writeToFile(const char *fileName, Bool_t recreate=kTRUE)
Save this current workspace into given file.
 
std::list< TObject * > allGenericObjects() const
Return list of all generic objects in the workspace.
 
static void setClassFileExportDir(const char *dir=0)
Specify the name of the directory in which embedded source code is unpacked and compiled.
 
Bool_t _doExport
Factory tool associated with workspace.
 
Bool_t removeSet(const char *name)
Remove a named set from the workspace.
 
static void autoImportClassCode(Bool_t flag)
If flag is true, source code of classes not the the ROOT distribution is automatically imported if on...
 
RooAbsCategory * catfunc(const char *name) const
Retrieve discrete function (RooAbsCategory) with given name. A null pointer is returned if not found.
 
RooArgSet allCatFunctions() const
Return set with all category function objects.
 
static std::string _classFileExportDir
 
static std::list< std::string > _classImplDirList
 
~RooWorkspace()
Workspace destructor.
 
Bool_t defineSet(const char *name, const RooArgSet &aset, Bool_t importMissing=kFALSE)
Define a named RooArgSet with given constituents.
 
RooWorkspace()
Default constructor.
 
Bool_t cd(const char *path=0)
 
Bool_t saveSnapshot(const char *name, const char *paramNames)
Save snapshot of values and attributes (including "Constant") of given parameters.
 
Bool_t loadSnapshot(const char *name)
Load the values and attributes of the parameters in the snapshot saved with the given name.
 
RooRealVar * var(const char *name) const
Retrieve real-valued variable (RooRealVar) with given name. A null pointer is returned if not found.
 
Bool_t import(const RooAbsArg &arg, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg())
Import a RooAbsArg object, e.g.
 
RooArgSet allFunctions() const
Return set with all function objects.
 
RooFactoryWSTool & factory()
Return instance to factory tool.
 
RooExpensiveObjectCache & expensiveObjectCache()
 
Bool_t isValidCPPID(const char *name)
Return true if given name is a valid C++ identifier name.
 
RooArgSet _sandboxNodes
Is there a transaction open?
 
Bool_t cancelTransaction()
Cancel an ongoing import transaction.
 
void exportObj(TObject *obj)
Export reference to given workspace object to CINT.
 
RooLinkedList _embeddedDataList
 
const RooArgSet * set(const char *name)
Return pointer to previously defined named set with given nmame If no such set is found a null pointe...
 
TObject * obj(const char *name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name)
 
TIterator * componentIterator() const
 
RooAbsPdf * pdf(const char *name) const
Retrieve p.d.f (RooAbsPdf) with given name. A null pointer is returned if not found.
 
Each class (see TClass) has a linked list of its base class(es).
 
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
 
Buffer base class used for serializing objects.
 
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
 
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
 
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
 
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
 
static DictFuncPtr_t GetDict(const char *cname)
Given the class name returns the Dictionary() function of a class (uses hash of name).
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
Bool_t HasDefaultConstructor() const
 
const char * GetImplFileName() const
 
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
 
Long_t Property() const
Set TObject::fBits and fStreamerType to cache information about the class.
 
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
 
Bool_t cd(const char *path=nullptr) override
Change current directory to "this" directory.
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
 
Iterator abstract base class.
 
virtual TObject * Next()=0
 
virtual TIterator * MakeIterator(Bool_t dir=kIterForward) const
Return a list iterator.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
virtual const char * GetTitle() const
Returns title of object.
 
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
 
virtual const char * GetName() const
Returns name of object.
 
Mother of all ROOT objects.
 
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
 
virtual const char * GetName() const
Returns name of object.
 
virtual void RecursiveRemove(TObject *obj)
Recursively remove this object from a list.
 
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
Regular expression class.
 
const char * Data() const
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
virtual char * ConcatFileName(const char *dir, const char *name)
Concatenate a directory and a file name. User must delete returned string.
 
virtual int MakeDirectory(const char *name)
Make a directory.
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
 
virtual int CompileMacro(const char *filename, Option_t *opt="", const char *library_name="", const char *build_dir="", UInt_t dirmode=0)
This method compiles and loads a shared library containing the code from the file "filename".
 
void(* DirAutoAdd_t)(void *, TDirectory *)
 
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.
 
std::vector< std::string > tokenise(const std::string &str, const std::string &delims)
Tokenise the string by splitting at the characters in delims.
 
static constexpr double pc