78#ifdef ROOFIT_LEGACY_EVAL_BACKEND 
   97   return setName.rfind(
"CACHE_", 0) == 0;
 
  102using std::string, std::list, std::cout, std::endl, std::map, std::vector, std::ifstream, std::ofstream, std::fstream, std::make_unique;
 
  280    std::ostringstream stream;
 
  282      stream << 
"\n\t" << 
token;
 
  284    coutE(InputArguments) << 
"RooWorkspace(" << 
GetName() << 
") ERROR in file specification, expecting 'filename:wsname:objname', but '" << 
fileSpec << 
"' given." 
  285        << 
"\nTokens read are:" << stream.str() << endl;
 
  296    coutE(InputArguments) << 
"RooWorkspace(" << 
GetName() << 
") ERROR opening file " << 
filename << endl ;
 
  304           << 
" or object is not a RooWorkspace" << endl ;
 
  320  coutE(InputArguments) << 
"RooWorkspace(" << 
GetName() << 
") ERROR: No RooAbsArg or RooAbsData object named " << 
objname 
  321         << 
" in workspace " << 
wsname << 
" in file " << 
filename << endl ;
 
 
  389  pc.
defineString(
"conflictSuffix",
"RenameConflictNodes",0) ;
 
  390  pc.
defineInt(
"renameConflictOrig",
"RenameConflictNodes",0,0) ;
 
  392  pc.
defineString(
"allVarsSuffix",
"RenameAllVariables",0) ;
 
  393  pc.
defineString(
"allVarsExcept",
"RenameAllVariables",1) ;
 
  397  pc.
defineInt(
"useExistingNodes",
"RecycleConflictNodes",0,0) ;
 
  399  pc.
defineInt(
"noRecursion",
"NoRecursion",0,0) ;
 
  400  pc.
defineMutex(
"RenameConflictNodes",
"RenameAllNodes") ;
 
  401  pc.
defineMutex(
"RenameConflictNodes",
"RecycleConflictNodes") ;
 
  402  pc.
defineMutex(
"RenameAllNodes",
"RecycleConflictNodes") ;
 
  403  pc.
defineMutex(
"RenameVariable",
"RenameAllVariables") ;
 
  432  std::map<string,string> 
varMap ;
 
  438    for (
unsigned int i=0; i < 
tokIn.size(); ++i) {
 
  454    std::unique_ptr<RooArgSet> vars{
inArg.getVariables()};
 
  455    for (
const auto v : *vars) {
 
  466  const char* 
tagIn = 
inArg.getStringAttribute(
"factory_tag") ;
 
  467  const char* 
tagWs = 
wsarg ? 
wsarg->getStringAttribute(
"factory_tag") : nullptr ;
 
  476        coutE(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") ERROR importing object named " << 
inArg.GetName()
 
  477                   << 
": another instance with same name already in the workspace and no conflict resolution protocol specified" << endl ;
 
  481          coutI(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") Object " << 
inArg.GetName() << 
" is already in workspace!" << endl ;
 
  487        coutI(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") Recycling existing object " << 
inArg.GetName() << 
" created with identical factory specification" << endl ;
 
  510    coutE(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") ERROR object named " << 
inArg.GetName() << 
": component(s) " 
  511        << 
conflictNodes << 
" already in the workspace and no conflict resolution protocol specified" << endl ;
 
  537      cnode2->setAttribute(tag.c_str()) ;
 
  538      if (!
cnode2->getStringAttribute(
"origName")) {
 
  548        coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName()
 
  549                   << 
") Resolving name conflict in workspace by changing name of imported node  " 
  562        if (!
wsnode->getStringAttribute(
"origName")) {
 
  563          wsnode->setStringAttribute(
"origName",
wsnode->GetName()) ;
 
  571          for (
unsigned int n=1; 
true; ++
n) {
 
  581          coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName()
 
  582                << 
") Resolving name conflict in workspace by changing name of original node " 
  586        coutW(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") Internal error: expected to find existing node " 
  587            << 
origName << 
" to be renamed, but didn't find it..." << endl ;
 
  603        cnode->setAttribute(tag.c_str()) ;
 
  604        if (!
cnode->getStringAttribute(
"origName")) {
 
  609          coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") Changing name of variable " 
  610              << 
origName << 
" to " << 
cnode->GetName() << 
" on request" << endl ;
 
  638    coutE(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") ERROR object named " << 
inArg.GetName() << 
": component(s) " 
  639        << 
conflictNodes2 << 
" cause naming conflict after conflict resolution protocol was executed" << endl ;
 
  645    if (node->importWorkspaceHook(*
this)) {
 
  646      coutE(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") ERROR object named " << node->GetName()
 
  647                 << 
" has an error in importing in one or more of its auxiliary objects, aborting" << endl ;
 
  657        coutW(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") WARNING: problems import class code of object " 
  658            << node->ClassName() << 
"::" << node->GetName() << 
", reading of workspace will require external definition of class" << endl ;
 
  664    node->setExpensiveObjectCache(
_eocache) ;
 
  673        coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") using existing copy of " << node->ClassName()
 
  674                   << 
"::" << node->GetName() << 
" for import of " << 
cloneTop2->ClassName() << 
"::" 
  687        coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") importing " << node->ClassName() << 
"::" 
  688            << node->GetName() << endl ;
 
  691      node->setWorkspace(*
this);
 
 
  750  pc.
defineInt(
"embedded",
"Embedded",0,0) ;
 
  767    coutI(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") importing dataset " << 
inData.GetName() << endl ;
 
  782    coutE(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") ERROR dataset with name " << 
dsetName << 
" already exists in workspace, import aborted" << endl ;
 
  786    coutE(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") ERROR dataset with name " << 
inData.GetName() << 
" already exists in workspace, import aborted" << endl ;
 
  794      coutI(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") changing name of dataset from  " << 
inData.GetName() << 
" to " << 
dsetName << endl ;
 
  806    for (
unsigned int i=0; i < 
tokIn.size(); ++i) {
 
  808        coutI(ObjectHandling) << 
"RooWorkSpace::import(" << 
GetName() << 
") changing name of dataset observable " << 
tokIn[i] << 
" to " << 
tokOut[i] << endl ;
 
 
  849    coutW(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName() << 
") WARNING redefining previously defined named set " << 
name << endl ;
 
  861   coutE(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName() << 
") ERROR set constituent \"" << 
sarg->GetName()
 
  862               << 
"\" is not in workspace and importMissing option is disabled" << endl ;
 
 
  887      coutW(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName()
 
  888                            << 
") WARNING redefining previously defined named set " << 
name << endl;
 
 
  907    coutW(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName() << 
") WARNING redefining previously defined named set " << 
name << endl ;
 
  916      coutE(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName() << 
") ERROR proposed set constituent \"" << 
token 
  917             << 
"\" is not in workspace" << endl ;
 
 
  945      coutE(InputArguments) << 
"RooWorkspace::defineSet(" << 
GetName() << 
") ERROR proposed set constituent \"" << 
token 
  946             << 
"\" is not in workspace" << endl ;
 
 
  966  std::map<string,RooArgSet>::iterator i = 
_namedSets.find(
name.c_str());
 
  967  return (i!=
_namedSets.end()) ? &(i->second) : 
nullptr;
 
 
  980    coutE(InputArguments) << 
"RooWorkspace::renameSet(" << 
GetName() << 
") ERROR a set with name " << 
name 
  981           << 
" does not exist" << endl ;
 
  987    coutE(InputArguments) << 
"RooWorkspace::renameSet(" << 
GetName() << 
") ERROR a set with name " << 
newName 
  988           << 
" already exists" << endl ;
 
 
 1011    coutE(InputArguments) << 
"RooWorkspace::removeSet(" << 
GetName() << 
") ERROR a set with name " << 
name 
 1012           << 
" does not exist" << endl ;
 
 
 1120      coutW(ObjectHandling) << 
"RooWorkspace::import(" << 
GetName() << 
") WARNING: problems import class code of object " 
 1121             << 
carg->ClassName() << 
"::" << 
carg->GetName() << 
", reading of workspace will require external definition of class" << endl ;
 
 
 1159  snapshot->setName(
name.c_str()) ;
 
 1162    snapshot->assign(params) ;
 
 1166    coutI(ObjectHandling) << 
"RooWorkspace::saveSnapshot(" << 
GetName() << 
") replacing previous snapshot with name " << 
name << endl ;
 
 
 1186    coutE(ObjectHandling) << 
"RooWorkspace::loadSnapshot(" << 
GetName() << 
") no snapshot with name " << 
name << 
" is available" << endl ;
 
 
 1279      std::stringstream 
ss;
 
 1280      ss << 
" RooWorkspace::argSet(" << 
GetName() << 
") no RooAbsArg named \"" << 
token << 
"\" in workspace" ;
 
 1283      throw std::runtime_error(
errorMsg);
 
 
 1301  return tmp->isFundamental() ? tmp : 
nullptr;
 
 
 1446  std::list<RooAbsData*> 
ret ;
 
 
 1459  std::list<RooAbsData*> 
ret ;
 
 
 1473  std::list<TObject*> 
ret ;
 
 1477    if (
gobj->IsA()==RooTObjWrap::Class()) {
 
 
 1506    oocxcoutD(
_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo(" << 
_wspace->
GetName() << 
") code of class " << 
tc->GetName() << 
" already imported, skipping" << endl ;
 
 1513    oocxcoutD(
_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo(" << 
_wspace->
GetName() << 
") code of class " << 
tc->GetName() << 
" is in ROOT distribution, skipping " << endl ;
 
 1523    oocoutE(
_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo(" << 
_wspace->
GetName() << 
") ERROR: cannot retrieve code file names for class " 
 1524               << 
tc->GetName() << 
" through ROOT TClass interface, unable to import code" << endl ;
 
 1531    oocxcoutD(
_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo(" << 
_wspace->
GetName() << 
") code of class " << 
tc->GetName() << 
" is in ROOT distribution, skipping " << endl ;
 
 1538  if (!(
tc->Property() & 
kIsAbstract) && !
tc->HasDefaultConstructor()) {
 
 1540                << 
tc->GetName() << 
" : it cannot be persisted because it doesn't have a default constructor. Please fix " << endl ;
 
 1573                  << 
tc->GetName() << 
" because header file " << 
declfile << 
" is not found in current directory nor in $ROOTSYS" ;
 
 1587      ooccoutW(
_wspace,ObjectHandling) << 
". To fix this problem, add the required directory to the search " 
 1588                   << 
"path using RooWorkspace::addClassDeclImportDir(const char* dir)" << endl ;
 
 1618                  << 
tc->GetName() << 
" because implementation file " << 
implfile << 
" is not found in current directory nor in $ROOTSYS" ;
 
 1632      ooccoutW(
_wspace,ObjectHandling) << 
". To fix this problem add the required directory to the search " 
 1633                   << 
"path using RooWorkspace::addClassImplImportDir(const char* dir)" << endl;
 
 1670                  << 
") ERROR opening declaration file " <<  
declfile << endl ;
 
 1675                << 
") importing code of class " << 
tc->GetName()
 
 1682    while(
fdecl.getline(buf,1023)) {
 
 1689      if (
strstr(buf,
"#include")) {
 
 1700      hpath += 
"/include/";
 
 1704                                          << 
") scheduling include file " << 
incfile << 
" for import" << endl;
 
 1713   decl += 
"// external include file below retrieved from workspace code storage\n" ;
 
 1727                  << 
") ERROR opening implementation file " <<  
implfile << endl ;
 
 1734    while(
fimpl.getline(buf,1023)) {
 
 1743      if (
strstr(buf,
"#include")) {
 
 1758      hpath += 
"/include/";
 
 1763                                          << 
") scheduling include file " << 
incfile << 
" for import" << endl;
 
 1776   impl += 
"// class declaration include file below retrieved from workspace code storage\n" ;
 
 1779   impl += 
"// external include file below retrieved from workspace code storage\n" ;
 
 1815          hpath += 
"/include/";
 
 1819                                              << 
") scheduling recursive include file " << 
incfile << 
" for import" 
 1839                << 
") code of class " << 
tc->GetName()
 
 1854  std::list<TClass*> 
bases ;
 
 1860    bases.push_back(base->GetClassPointer()) ;
 
 
 1891  std::string title= 
"TDirectory representation of RooWorkspace " + std::string(
GetName());
 
 
 1917    coutE(InputArguments) << 
"RooWorkspace::import(" << 
GetName() << 
") generic object with name " 
 1918           << 
object.GetName() << 
" is already in workspace and replaceExisting flag is set to false" << endl ;
 
 1924  object.IsA()->SetDirectoryAutoAdd(
nullptr);
 
 1934  object.IsA()->SetDirectoryAutoAdd(func);
 
 
 1957    coutE(InputArguments) << 
"RooWorkspace::import(" << 
GetName() << 
") generic object with name " 
 1958           << 
aliasName << 
" is already in workspace and replaceExisting flag is set to false" << endl ;
 
 
 2032  if (!
gobj) 
return nullptr;
 
 
 2072  cxcoutD(ObjectHandling) << 
"INFO: Creating RooFactoryWSTool associated with this workspace" << endl ;
 
 
 2098  bool verbose(
false);
 
 2106  cout << endl << 
"RooWorkspace(" << 
GetName() << 
") " << 
GetTitle() << 
" contents" << endl << endl  ;
 
 2126   if (!
parg->hasClients()) {
 
 2135   if (!
parg->hasClients()) {
 
 2143   if (!
parg->hasClients()) {
 
 2192    cout << 
"variables" << endl ;
 
 2193    cout << 
"---------" << endl ;
 
 2199    cout << 
"p.d.f.s" << endl ;
 
 2200    cout << 
"-------" << endl ;
 
 2204   parg->printComponentTree() ;
 
 2214      cout << 
"analytical resolution models" << endl ;
 
 2215      cout << 
"----------------------------" << endl ;
 
 2225    cout << 
"functions" << endl ;
 
 2226    cout << 
"--------" << endl ;
 
 2230   parg->printComponentTree() ;
 
 2239    cout << 
"category functions" << endl ;
 
 2240    cout << 
"------------------" << endl ;
 
 2244   parg->printComponentTree() ;
 
 2253    cout << 
"datasets" << endl ;
 
 2254    cout << 
"--------" << endl ;
 
 2256      std::cout << 
data2->ClassName() << 
"::" << 
data2->GetName() << *
data2->get() << std::endl;
 
 2258    std::cout << std::endl ;
 
 2262    cout << 
"embedded datasets (in pdfs and functions)" << endl ;
 
 2263    cout << 
"-----------------------------------------" << endl ;
 
 2265      cout << 
data2->ClassName() << 
"::" << 
data2->GetName() << *
data2->get() << endl ;
 
 2271    cout << 
"parameter snapshots" << endl ;
 
 2272    cout << 
"-------------------" << endl ;
 
 2274      cout << 
snap->GetName() << 
" = (" ;
 
 2277   if (first) { first=
false ; } 
else { cout << 
"," ; }
 
 2278   cout << 
a->GetName() << 
"=" ;
 
 2279   a->printValue(cout) ;
 
 2280   if (
a->isConstant()) {
 
 2284      cout << 
")" << endl ;
 
 2291    cout << 
"named sets" << endl ;
 
 2292    cout << 
"----------" << endl ;
 
 2293    for (map<string,RooArgSet>::const_iterator it = 
_namedSets.begin() ; it != 
_namedSets.end() ; ++it) {
 
 2295          cout << it->first << 
":" << it->second << endl;
 
 2304    cout << 
"generic objects" << endl ;
 
 2305    cout << 
"---------------" << endl ;
 
 2307      if (
gobj->IsA()==RooTObjWrap::Class()) {
 
 2310   cout << 
gobj->ClassName() << 
"::" << 
gobj->GetName() << endl ;
 
 2318    cout << 
"study modules" << endl ;
 
 2319    cout << 
"-------------" << endl ;
 
 2321      cout << 
smobj->ClassName() << 
"::" << 
smobj->GetName() << endl ;
 
 2328    cout << 
"embedded class code" << endl ;
 
 2329    cout << 
"-------------------" << endl ;
 
 2335    cout << 
"embedded precalculated expensive components" << endl ;
 
 2336    cout << 
"-------------------------------------------" << endl ;
 
 
 2357   if (
R__b.IsReading()) {
 
 2371         _fmap[
name]._cxxfile.Streamer(
R__b);
 
 2380         _c2fmap[
name]._baseName.Streamer(
R__b);
 
 2381         _c2fmap[
name]._fileBase.Streamer(
R__b);
 
 2391            _ehmap[
name]._hname.Streamer(
R__b);
 
 2392            _ehmap[
name]._hfile.Streamer(
R__b);
 
 2399      _compiledOK = !compileClasses();
 
 2404      R__c = 
R__b.WriteVersion(thisClass::IsA(), 
true);
 
 2407      UInt_t count = _fmap.size();
 
 2409      map<TString, ClassFiles>::iterator iter = _fmap.begin();
 
 2410      while (iter != _fmap.end()) {
 
 2413         iter->second._hext.Streamer(
R__b);
 
 2414         iter->second._hfile.Streamer(
R__b);
 
 2415         iter->second._cxxfile.Streamer(
R__b);
 
 2421      count = _c2fmap.size();
 
 2423      map<TString, ClassRelInfo>::iterator 
iter2 = _c2fmap.
begin();
 
 2433      count = _ehmap.size();
 
 2435      map<TString, ExtraHeader>::iterator 
iter3 = _ehmap.
begin();
 
 
 2459   if (
R__b.IsReading()) {
 
 2465         node->ioStreamerPass2();
 
 2472         node->setExpensiveObjectCache(
_eocache);
 
 2473         node->setWorkspace(*
this);
 
 2474#ifdef ROOFIT_LEGACY_EVAL_BACKEND 
 2477            if (tmp->isSealed() && tmp->sealNotice() && 
strlen(tmp->sealNotice()) > 0) {
 
 2478               cout << 
"RooWorkspace::Streamer(" << 
GetName() << 
") " << node->ClassName() << 
"::" << node->GetName()
 
 2479                    << 
" : " << tmp->sealNotice() << endl;
 
 2500               const auto refCount = 
tmparg->_clientList.refCount(client);
 
 2504               tmparg->_clientList.Remove(client, 
true);
 
 2512               cxcoutD(ObjectHandling) << 
"RooWorkspace::Streamer(" << 
GetName() << 
") element " << 
tmparg->GetName()
 
 2513                                       << 
" has external value client link to " << 
vclient << 
" (" << 
vclient->GetName()
 
 2514                                       << 
") with ref count " << 
tmparg->_clientListValue.refCount(
vclient) << endl;
 
 2516               const auto refCount = 
tmparg->_clientListValue.refCount(
vclient);
 
 2528               cxcoutD(ObjectHandling) << 
"RooWorkspace::Streamer(" << 
GetName() << 
") element " << 
tmparg->GetName()
 
 2529                                       << 
" has external shape client link to " << 
sclient << 
" (" << 
sclient->GetName()
 
 2530                                       << 
") with ref count " << 
tmparg->_clientListShape.refCount(
sclient) << endl;
 
 2532               const auto refCount = 
tmparg->_clientListShape.refCount(
sclient);
 
 2546         for (
auto client : 
iterx.second) {
 
 2547            iterx.first->_clientList.Add(client);
 
 2552         for (
auto client : 
iterx.second) {
 
 2553            iterx.first->_clientListValue.Add(client);
 
 2558         for (
auto client : 
iterx.second) {
 
 2559            iterx.first->_clientListShape.Add(client);
 
 
 2574  map<TString,ClassRelInfo>::const_iterator iter = _c2fmap.begin() ;
 
 2575  while(iter!=_c2fmap.end()) {
 
 2579    ret += iter->first ;
 
 
 2593    0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
 
 2594    0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
 
 2595    0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
 
 2596    0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
 
 2597    0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
 
 2598    0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
 
 2599    0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
 
 2600    0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
 
 2601    0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
 
 2602    0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
 
 2603    0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
 
 2604    0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
 
 2605    0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
 
 2606    0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
 
 2607    0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
 
 2608    0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
 
 2609    0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
 
 2610    0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
 
 2611    0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
 
 2612    0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
 
 2613    0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
 
 2614    0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
 
 2615    0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
 
 2616    0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
 
 2617    0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
 
 2618    0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
 
 2619    0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
 
 2620    0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
 
 2621    0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
 
 2622    0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
 
 2623    0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
 
 2624    0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
 
 2625    0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
 
 2626    0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
 
 2627    0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
 
 2628    0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
 
 2629    0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
 
 2630    0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
 
 2631    0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
 
 2632    0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
 
 2633    0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
 
 2634    0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
 
 2635    0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
 
 2636    0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
 
 2637    0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
 
 2638    0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
 
 2639    0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
 
 2640    0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
 
 2641    0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
 
 2642    0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
 
 2643    0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
 
 2694  map<TString,ClassRelInfo>::iterator iter = _c2fmap.begin() ;
 
 2695  while(iter!=_c2fmap.end()) {
 
 2697    oocxcoutD(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() now processing class " << iter->first.Data() << endl ;
 
 2701      oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Embedded class " 
 2702                  << iter->first << 
" already in ROOT class table, skipping" << endl ;
 
 2712   oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() reusing code export directory " << 
dirName.c_str()
 
 2713               << 
" to extract coded embedded in workspace" << endl ;
 
 2716     oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() creating code export directory " << 
dirName.c_str()
 
 2717                 << 
" to extract coded embedded in workspace" << endl ;
 
 2719     oocoutE(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR creating code export directory " << 
dirName.c_str()
 
 2720                 << 
" to extract coded embedded in workspace" << endl ;
 
 2742     while (
ifdecl.getline(buf, 64000)) {
 
 2753      oocoutI(_wspace, ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting extra header file " 
 2761         oocoutE(_wspace, ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR opening file " << 
fdname 
 2762                                          << 
" for writing" << endl;
 
 2776    oocxcoutD(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() now processing file with base " << iter->second._fileBase << endl ;
 
 2780      oocxcoutD(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() file with base name " << iter->second._fileBase
 
 2781                << 
" has already been extracted, skipping to next class" << endl ;
 
 2792      while (
ifdecl.getline(buf, 64000)) {
 
 2803      oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting declaration code of class " << iter->first << 
", file " << 
fdname << endl ;
 
 2806   oocoutE(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR opening file " 
 2807               << 
fdname << 
" for writing" << endl ;
 
 2816    string finame = 
Form(
"%s/%s.cxx",
dirName.c_str(),iter->second._fileBase.Data()) ;
 
 2821      while (
ifimpl.getline(buf, 64000)) {
 
 2832      oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Extracting implementation code of class " << iter->first << 
", file " << 
finame << endl ;
 
 2835   oocoutE(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR opening file" 
 2836               << 
finame << 
" for writing" << endl ;
 
 2845    oocxcoutD(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() marking code unit  " << iter->second._fileBase << 
" as extracted" << endl ;
 
 2848    oocoutI(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() Compiling code unit " << iter->second._fileBase.Data() << 
" to define class " << iter->first << endl ;
 
 2852      oocoutE(_wspace,ObjectHandling) << 
"RooWorkspace::CodeRepo::compileClasses() ERROR compiling class " << iter->first.Data() << 
", to fix this you can do the following: " << endl
 
 2853                  << 
"  1) Fix extracted source code files in directory " << 
dirName.c_str() << 
"/" << endl
 
 2854                  << 
"  2) In clean ROOT session compiled fixed classes by hand using '.x " << 
dirName.c_str() << 
"/ClassName.cxx+'" << endl
 
 2855                  << 
"  3) Reopen file with RooWorkspace with broken source code in UPDATE mode. Access RooWorkspace to force loading of class" << endl
 
 2856                  << 
"     Broken instances in workspace will _not_ be compiled, instead precompiled fixed instances will be used." << endl
 
 2857                  << 
"  4) Reimport fixed code in workspace using 'RooWorkspace::importClassCode(\"*\",true)' method, Write() updated workspace to file and close file" << endl
 
 2858                  << 
"  5) Reopen file in clean ROOT session to confirm that problems are fixed" << endl ;
 
 
 2885    coutE(ObjectHandling) << 
"RooWorkspace::WSDir::Add(" << 
GetName() << 
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
 
 2887    InternalAppend(
obj) ;
 
 
 2898    coutE(ObjectHandling) << 
"RooWorkspace::WSDir::Add(" << 
GetName() << 
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
 
 2900    InternalAppend(
obj) ;
 
 
 2926      auto const& setName = 
c.first;
 
 2927      auto& 
set = 
c.second;
 
 
TObject * clone(const char *newname) const override
 
R__EXTERN TClassTable * gClassTable
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
R__EXTERN TSystem * gSystem
 
const_iterator begin() const
 
const_iterator end() const
 
Common abstract base class for objects that represent a value and a "shape" in RooFit.
 
static void ioStreamerPass2Finalize()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
 
A space to attach TBranches.
 
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
 
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
 
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
 
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
 
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
 
RooAbsArg * find(const char *name) const
Find object with given name in list.
 
Abstract base class for binned and unbinned datasets.
 
Abstract base class for test statistics objects that evaluate a function or PDF at each point of a gi...
 
Abstract interface for all probability density functions.
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
Abstract base class for RooStudyManager modules.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
 
bool containsInstance(const RooAbsArg &var) const override
Check if this exact instance is in this collection.
 
RooArgSet * selectCommon(const RooAbsCollection &refColl) const
Use RooAbsCollection::selecCommon(), but return as RooArgSet.
 
Object to represent discrete states.
 
Named container for two doubles, two integers two object points and three string pointers that can be...
 
Configurable parser for RooCmdArg named arguments.
 
void defineMutex(const char *head, Args_t &&... tail)
Define arguments where any pair is mutually exclusive.
 
bool process(const RooCmdArg &arg)
Process given RooCmdArg.
 
bool ok(bool verbose) const
Return true of parsing was successful.
 
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false) const
Return string property registered with name 'name'.
 
bool defineString(const char *name, const char *argName, int stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
 
bool defineInt(const char *name, const char *argName, int intNum, int defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
 
int getInt(const char *name, int defaultValue=0) const
Return integer property registered with name 'name'.
 
Singleton class that serves as repository for objects that are expensive to calculate.
 
void importCacheObjects(RooExpensiveObjectCache &other, const char *ownerName, bool verbose=false)
 
A wrapper around TIterator derivatives.
 
Collection class for internal use, storing a collection of RooAbsArg pointers in a doubly linked list...
 
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
 
bool Replace(const TObject *oldArg, const TObject *newArg)
Replace object 'oldArg' in collection with new object 'newArg'.
 
void Delete(Option_t *o=nullptr) override
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 Add(TObject *arg)
 
TObject * FindObject(const char *name) const override
Return pointer to object with given name.
 
virtual bool Remove(TObject *arg)
Remove object from collection.
 
static RooMsgService & instance()
Return reference to singleton instance.
 
static bool setAddDirectoryStatus(bool flag)
Configure whether new instances of RooPlot will add themselves to gDirectory.
 
Variable that can be changed from the outside.
 
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
 
The RooStringView is a wrapper around a C-style string that can also be constructed from a std::strin...
 
An interface to set and retrieve a workspace.
 
virtual void ReplaceWS(RooWorkspace *ws)=0
Set the workspace irrespective of what the previous workspace is.
 
std::map< TString, ExtraHeader > _ehmap
 
void Streamer(TBuffer &) override
Custom streamer for the workspace.
 
std::string listOfClassNames() const
Return STL string with last of class names contained in the code repository.
 
bool autoImportClass(TClass *tc, bool doReplace=false)
Import code of class 'tc' into the repository.
 
bool compileClasses()
For all classes in the workspace for which no class definition is found in the ROOT class table extra...
 
std::map< TString, ClassRelInfo > _c2fmap
 
std::map< TString, ClassFiles > _fmap
 
void InternalAppend(TObject *obj)
Internal access to TDirectory append method.
 
void Add(TObject *, bool) override
Overload TDirectory interface method to prohibit insertion of objects in read-only directory workspac...
 
TClass * IsA() const override
 
void Append(TObject *, bool) override
Overload TDirectory interface method to prohibit insertion of objects in read-only directory workspac...
 
Persistable container for RooFit projects.
 
RooExpensiveObjectCache _eocache
Cache for expensive objects.
 
TObject * obj(RooStringView name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name)
 
RooLinkedList _genObjects
List of generic objects.
 
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.
 
static void addClassDeclImportDir(const char *dir)
Add dir to search path for class declaration (header) files.
 
void Print(Option_t *opts=nullptr) const override
Print contents of the workspace.
 
RooLinkedList _dataList
List of owned datasets.
 
RooAbsCategory * catfunc(RooStringView name) const
Retrieve discrete function (RooAbsCategory) with given name. A null pointer is returned if not found.
 
WSDir * _dir
! Transient ROOT directory representation of workspace
 
static void addClassImplImportDir(const char *dir)
Add dir to search path for class implementation (.cxx) files.
 
RooAbsPdf * pdf(RooStringView name) const
Retrieve p.d.f (RooAbsPdf) with given name. A null pointer is returned if not found.
 
std::map< std::string, RooArgSet > _namedSets
Map of named RooArgSets.
 
RooAbsData * embeddedData(RooStringView name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
 
RooCategory * cat(RooStringView name) const
Retrieve discrete variable (RooCategory) with given name. A null pointer is returned if not found.
 
void clearStudies()
Remove all RooStudyManager modules.
 
bool renameSet(const char *name, const char *newName)
Rename set to a new name.
 
TIterator * componentIterator() const R__DEPRECATED(6
 
std::unique_ptr< RooFactoryWSTool > _factory
! Factory tool associated with workspace
 
RooArgSet allVars() const
Return set with all variable objects.
 
RooArgSet argSet(RooStringView nameList) const
Return set of RooAbsArgs matching to given list of names.
 
bool writeToFile(const char *fileName, bool recreate=true)
Save this current workspace into given file.
 
const RooArgSet * set(RooStringView name)
Return pointer to previously defined named set with given nmame If no such set is found a null pointe...
 
bool cd(const char *path=nullptr)
 
RooArgSet allCats() const
Return set with all category objects.
 
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
 
RooAbsArg * fundArg(RooStringView name) const
Return fundamental (i.e.
 
RooLinkedList _views
List of model views.
 
~RooWorkspace() override
Workspace destructor.
 
bool cancelTransaction()
Cancel an ongoing import transaction.
 
bool startTransaction()
Open an import transaction operations.
 
TObject * Clone(const char *newname="") const override
TObject::Clone() needs to be overridden.
 
RooArgSet allResolutionModels() const
Return set with all resolution model objects.
 
RooLinkedList _snapshots
List of parameter snapshots.
 
bool saveSnapshot(RooStringView, const char *paramNames)
Save snapshot of values and attributes (including "Constant") of given parameters.
 
RooArgSet allPdfs() const
Return set with all probability density function objects.
 
void Streamer(TBuffer &) override
Stream an object of class RooWorkspace.
 
TObject * genobj(RooStringView name) const
Return generic object with given name.
 
std::list< RooAbsData * > allData() const
Return list of all dataset in the workspace.
 
RooLinkedList _studyMods
List if StudyManager modules.
 
std::list< TObject * > allGenericObjects() const
Return list of all generic objects in the workspace.
 
static void setClassFileExportDir(const char *dir=nullptr)
Specify the name of the directory in which embedded source code is unpacked and compiled.
 
bool importClassCode(const char *pat="*", bool doReplace=false)
Import code of all classes in the workspace that have a class name that matches pattern 'pat' and whi...
 
bool makeDir()
Create transient TDirectory representation of this workspace.
 
RooArgSet allCatFunctions() const
Return set with all category function objects.
 
static std::string _classFileExportDir
 
static std::list< std::string > _classImplDirList
 
RooAbsReal * function(RooStringView name) const
Retrieve function (RooAbsReal) with given name. Note that all RooAbsPdfs are also RooAbsReals....
 
RooAbsArg * arg(RooStringView name) const
Return RooAbsArg with given name. A null pointer is returned if none is found.
 
bool import(const RooAbsArg &arg, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}, const RooCmdArg &arg9={})
Import a RooAbsArg object, e.g.
 
RooWorkspace()
Default constructor.
 
bool removeSet(const char *name)
Remove a named set from the workspace.
 
RooArgSet allFunctions() const
Return set with all function objects.
 
RooFactoryWSTool & factory()
Return instance to factory tool.
 
bool extendSet(const char *name, const char *newContents)
Define a named set in the workspace through a comma separated list of names of objects already in the...
 
RooExpensiveObjectCache & expensiveObjectCache()
 
RooArgSet _sandboxNodes
! Sandbox for incoming objects in a transaction
 
bool defineSetInternal(const char *name, const RooArgSet &aset)
 
bool _openTrans
! Is there a transaction open?
 
RooRealVar * var(RooStringView name) const
Retrieve real-valued variable (RooRealVar) with given name. A null pointer is returned if not found.
 
bool addStudy(RooAbsStudy &study)
Insert RooStudyManager module.
 
static void autoImportClassCode(bool flag)
If flag is true, source code of classes not the ROOT distribution is automatically imported if on obj...
 
RooLinkedList _embeddedDataList
List of owned datasets that are embedded in pdfs.
 
RooArgSet _allOwnedNodes
List of owned pdfs and components.
 
RooAbsData * data(RooStringView name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
 
std::list< RooAbsData * > allEmbeddedData() const
Return list of all dataset in the workspace.
 
bool loadSnapshot(const char *name)
Load the values and attributes of the parameters in the snapshot saved with the given name.
 
bool defineSet(const char *name, const RooArgSet &aset, bool importMissing=false)
Define a named RooArgSet with given constituents.
 
Buffer base class used for serializing objects.
 
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 cd() 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 an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
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.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
Mother of all ROOT objects.
 
virtual void RecursiveRemove(TObject *obj)
Recursively remove this object from a list.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
 
Regular expression class.
 
const char * Data() const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
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".
 
virtual TString GetDirName(const char *pathname)
Return the directory name in pathname.
 
void(* DirAutoAdd_t)(void *, TDirectory *)
 
std::vector< std::string > Split(std::string_view str, std::string_view delims, bool skipEmpty=false)
Splits a string at each character in delims.
 
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.