178 TNamed(other), _uuid(other._uuid), _classes(other._classes,this), _dir(nullptr), _factory(nullptr), _doExport(
kFALSE), _openTrans(
kFALSE)
186 while((data2=iter->
Next())) {
202 for (map<string,RooArgSet>::const_iterator iter3 = other.
_namedSets.begin() ; iter3 != other.
_namedSets.end() ; ++iter3) {
212 while((gobj=iter4->
Next())) {
264 if (tokens.size() != 3) {
265 std::ostringstream stream;
266 for (
const auto& token : tokens) {
267 stream <<
"\n\t" << token;
269 coutE(
InputArguments) <<
"RooWorkspace(" <<
GetName() <<
") ERROR in file specification, expecting 'filename:wsname:objname', but '" << fileSpec <<
"' given."
270 <<
"\nTokens read are:" << stream.str() << endl;
274 const std::string& filename = tokens[0];
275 const std::string& wsname = tokens[1];
276 const std::string& objname = tokens[2];
289 <<
" or object is not a RooWorkspace" << endl ;
296 Bool_t ret =
import(*warg,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
302 Bool_t ret =
import(*wdata,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
308 <<
" in workspace " << wsname <<
" in file " << filename << endl ;
325 while((oneArg=(
RooAbsArg*)iter->Next())) {
326 ret |=
import(*oneArg,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) ;
378 pc.defineString(
"conflictSuffix",
"RenameConflictNodes",0) ;
379 pc.defineInt(
"renameConflictOrig",
"RenameConflictNodes",0,0) ;
380 pc.defineString(
"allSuffix",
"RenameAllNodes",0) ;
381 pc.defineString(
"allVarsSuffix",
"RenameAllVariables",0) ;
382 pc.defineString(
"allVarsExcept",
"RenameAllVariables",1) ;
383 pc.defineString(
"varChangeIn",
"RenameVar",0,
"",
kTRUE) ;
384 pc.defineString(
"varChangeOut",
"RenameVar",1,
"",
kTRUE) ;
385 pc.defineString(
"factoryTag",
"FactoryTag",0) ;
386 pc.defineInt(
"useExistingNodes",
"RecycleConflictNodes",0,0) ;
387 pc.defineInt(
"silence",
"Silence",0,0) ;
388 pc.defineInt(
"noRecursion",
"NoRecursion",0,0) ;
389 pc.defineMutex(
"RenameConflictNodes",
"RenameAllNodes") ;
390 pc.defineMutex(
"RenameConflictNodes",
"RecycleConflictNodes") ;
391 pc.defineMutex(
"RenameAllNodes",
"RecycleConflictNodes") ;
392 pc.defineMutex(
"RenameVariable",
"RenameAllVariables") ;
401 const char* suffixC =
pc.getString(
"conflictSuffix") ;
402 const char* suffixA =
pc.getString(
"allSuffix") ;
403 const char* suffixV =
pc.getString(
"allVarsSuffix") ;
404 const char* exceptVars =
pc.getString(
"allVarsExcept") ;
405 const char* varChangeIn =
pc.getString(
"varChangeIn") ;
406 const char* varChangeOut =
pc.getString(
"varChangeOut") ;
407 Bool_t renameConflictOrig =
pc.getInt(
"renameConflictOrig") ;
408 Int_t useExistingNodes =
pc.getInt(
"useExistingNodes") ;
409 Int_t silence =
pc.getInt(
"silence") ;
410 Int_t noRecursion =
pc.getInt(
"noRecursion") ;
414 if (suffixC && strlen(suffixC)==0) suffixC = 0 ;
415 if (suffixA && strlen(suffixA)==0) suffixA = 0 ;
418 const char* suffix = suffixA ? suffixA : suffixC ;
421 map<string,string> varMap ;
422 if (strlen(varChangeIn)>0) {
427 for (
unsigned int i=0; i < tokIn.size(); ++i) {
428 varMap.insert(std::make_pair(tokIn[i], tokOut[i]));
431 assert(tokIn.size() == tokOut.size());
436 std::set<string> exceptVarNames ;
437 if (exceptVars && strlen(exceptVars)) {
439 exceptVarNames.insert(toks.begin(), toks.end());
442 if (suffixV != 0 && strlen(suffixV)>0) {
444 for (
const auto v : *vars) {
445 if (exceptVarNames.find(
v->GetName())==exceptVarNames.end()) {
446 varMap[
v->GetName()] =
Form(
"%s_%s",
v->GetName(),suffixV) ;
458 Bool_t factoryMatch = (tagIn && tagWs && !strcmp(tagIn,tagWs)) ;
460 ((
RooAbsArg&)inArg).setAttribute(
"RooWorkspace::Recycle") ;
463 if (!suffix && wsarg && !useExistingNodes && !(inArg.
isFundamental() && varMap[inArg.
GetName()]!=
"")) {
467 <<
": another instance with same name already in the workspace and no conflict resolution protocol specified" << endl ;
476 coutI(
ObjectHandling) <<
"RooWorkSpace::import(" <<
GetName() <<
") Recycling existing object " << inArg.
GetName() <<
" created with identical factory specification" << endl ;
484 branchSet.
add(inArg) ;
489 for (
const auto branch : branchSet) {
491 if (wsbranch && wsbranch!=branch && !branch->
getAttribute(
"RooWorkspace::Recycle") && !useExistingNodes) {
492 conflictNodes.
add(*branch) ;
497 if (conflictNodes.
getSize()>0 && !suffix && !useExistingNodes) {
499 << conflictNodes <<
" already in the workspace and no conflict resolution protocol specified" << endl ;
512 conflictNodes.
add(branchSet) ;
516 string topName2 = cloneTop->
GetName() ;
517 if (!renameConflictOrig) {
519 for (
const auto cnode : conflictNodes) {
521 string origName = cnode2->
GetName() ;
524 string tag =
Form(
"ORIGNAME:%s",origName.c_str()) ;
527 string tag2 =
Form(
"%s",origName.c_str()) ;
532 if (cnode2==cloneTop) {
538 <<
") Resolving name conflict in workspace by changing name of imported node "
539 << origName <<
" to " << cnode2->
GetName() << endl ;
545 for (
const auto cnode : conflictNodes) {
547 string origName = cnode->GetName() ;
556 wsnode->
SetName(
Form(
"%s_%s",cnode->GetName(),suffix)) ;
557 wsnode->
SetTitle(
Form(
"%s (%s)",cnode->GetTitle(),suffix)) ;
560 for (
unsigned int n=1;
true; ++
n) {
561 string newname =
Form(
"%s_%s_%d",cnode->GetName(),suffix,
n) ;
563 wsnode->
SetName(newname.c_str()) ;
564 wsnode->
SetTitle(
Form(
"%s (%s %d)",cnode->GetTitle(),suffix,
n)) ;
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 ;
583 if (strlen(varChangeIn)>0 || (suffixV && strlen(suffixV)>0)) {
586 for (
const auto cnode : *cloneSet) {
588 if (varMap.find(cnode->GetName())!=varMap.end()) {
589 string origName = cnode->GetName() ;
590 cnode->SetName(varMap[cnode->GetName()].c_str()) ;
591 string tag =
Form(
"ORIGNAME:%s",origName.c_str()) ;
592 cnode->setAttribute(tag.c_str()) ;
593 if (!cnode->getStringAttribute(
"origName")) {
594 string tag2 =
Form(
"%s",origName.c_str()) ;
595 cnode->setStringAttribute(
"origName",tag2.c_str()) ;
600 << origName <<
" to " << cnode->GetName() <<
" on request" << endl ;
603 if (cnode==cloneTop) {
604 topName2 = cnode->GetName() ;
620 for (
const auto branch2 : branchSet2) {
622 conflictNodes2.
add(*branch2) ;
627 if (conflictNodes2.
getSize()) {
629 << conflictNodes2 <<
" cause naming conflict after conflict resolution protocol was executed" << endl ;
634 for (
const auto node : *cloneSet2) {
635 if (node->importWorkspaceHook(*
this)) {
637 <<
" has an error in importing in one or more of its auxiliary objects, aborting" << endl ;
644 for (
const auto node : *cloneSet2) {
648 << node->IsA()->GetName() <<
"::" << node->GetName() <<
", reading of workspace will require external definition of class" << endl ;
654 node->setExpensiveObjectCache(
_eocache) ;
662 if (!silence && useExistingNodes) {
664 <<
"::" << node->GetName() <<
" for import of " << cloneTop2->IsA()->
GetName() <<
"::"
665 << cloneTop2->
GetName() << endl ;
678 << node->GetName() << endl ;
698 for (
auto cloneNode : *cloneSet){
704 if (recycledNodes.
getSize()>0) {
705 for (
const auto node : *cloneSet2) {
706 node->redirectServers(recycledNodes) ;
749 pc.defineString(
"dsetName",
"Rename",0,
"") ;
750 pc.defineString(
"varChangeIn",
"RenameVar",0,
"",
kTRUE) ;
751 pc.defineString(
"varChangeOut",
"RenameVar",1,
"",
kTRUE) ;
752 pc.defineInt(
"embedded",
"Embedded",0,0) ;
753 pc.defineInt(
"silence",
"Silence",0,0) ;
762 const char* dsetName =
pc.getString(
"dsetName") ;
763 const char* varChangeIn =
pc.getString(
"varChangeIn") ;
764 const char* varChangeOut =
pc.getString(
"varChangeOut") ;
765 Bool_t embedded =
pc.getInt(
"embedded") ;
766 Int_t silence =
pc.getInt(
"silence") ;
772 if (dsetName && strlen(dsetName)==0) {
783 if (dsetName && dataList.
FindObject(dsetName)) {
784 coutE(
ObjectHandling) <<
"RooWorkspace::import(" <<
GetName() <<
") ERROR dataset with name " << dsetName <<
" already exists in workspace, import aborted" << endl ;
788 coutE(
ObjectHandling) <<
"RooWorkspace::import(" <<
GetName() <<
") ERROR dataset with name " << inData.
GetName() <<
" already exists in workspace, import aborted" << endl ;
804 if (strlen(varChangeIn)>0) {
808 for (
unsigned int i=0; i < tokIn.size(); ++i) {
810 coutI(
ObjectHandling) <<
"RooWorkSpace::import(" <<
GetName() <<
") changing name of dataset observable " << tokIn[i] <<
" to " << tokOut[i] << endl ;
827 dataList.
Add(clone) ;
837 while ((carg=iter2.
next())) {
873 <<
"\" is not in workspace and importMissing option is disabled" << endl ;
899 <<
") WARNING redefining previously defined named set " <<
name << endl;
926 if (!
arg(token.c_str())) {
928 <<
"\" is not in workspace" << endl ;
931 wsargs.
add(*
arg(token.c_str())) ;
955 if (!
arg(token.c_str())) {
957 <<
"\" is not in workspace" << endl ;
960 wsargs.
add(*
arg(token.c_str())) ;
978 return (i!=
_namedSets.end()) ? &(i->second) : 0 ;
992 <<
" does not exist" << endl ;
999 <<
" already exists" << endl ;
1023 <<
" does not exist" << endl ;
1143 << carg->IsA()->
GetName() <<
"::" << carg->
GetName() <<
", reading of workspace will require external definition of class" << endl ;
1179 delete actualParams ;
1184 *snapshot = params ;
1215 *actualParams = *snap ;
1216 delete actualParams ;
1340 coutE(
InputArguments) <<
" RooWorkspace::argSet(" <<
GetName() <<
") no RooAbsArg named \"" << token <<
"\" in workspace" << endl ;
1517 list<RooAbsData*> ret ;
1521 ret.push_back(dat) ;
1533 list<RooAbsData*> ret ;
1537 ret.push_back(dat) ;
1550 list<TObject*> ret ;
1559 ret.push_back(gobj) ;
1592 if (mapEntry && strlen(mapEntry)>0) {
1602 if (implfile.empty() || declfile.empty()) {
1604 << tc->
GetName() <<
" through ROOT TClass interface, unable to import code" << endl ;
1620 << tc->
GetName() <<
" : it cannot be persisted because it doesn't have a default constructor. Please fix " << endl ;
1627 char *declpath =
nullptr, *implpath =
nullptr;
1653 << tc->
GetName() <<
" because header file " << declfile <<
" is not found in current directory nor in $ROOTSYS" ;
1668 <<
"path using RooWorkspace::addClassDeclImportDir(const char* dir)" << endl ;
1699 << tc->
GetName() <<
" because implementation file " << implfile <<
" is not found in current directory nor in $ROOTSYS" ;
1714 <<
"path using RooWorkspace::addClassImplImportDir(const char* dir)" << endl;
1736 int dotpos2 = strrchr(declfilename.c_str(),
'.') - declfilename.c_str() ;
1737 string declfilebase = declfilename.substr(0,dotpos2) ;
1738 string declfileext = declfilename.substr(dotpos2+1) ;
1740 list<string> extraHeaders ;
1743 if (
_fmap.find(declfilebase) ==
_fmap.end()) {
1746 fstream fdecl(declpath?declpath:declfile.c_str()) ;
1751 <<
") ERROR opening declaration file " << declfile << endl ;
1758 <<
") importing code of class " << tc->
GetName()
1759 <<
" from " << (implpath?implpath:implfile.c_str())
1760 <<
" and " << (declpath?declpath:declfile.c_str()) << endl ;
1765 while(fdecl.getline(buf,1023)) {
1769 char* extincfile = 0 ;
1772 if (strstr(buf,
"#include")) {
1775 strlcpy(tmp, buf, 64000);
1776 Bool_t stdinclude = strchr(buf,
'<');
1777 strtok(tmp,
" <\"");
1778 char *incfile = strtok(0,
" <>\"");
1783 hpath +=
"/include/";
1787 <<
") scheduling include file " << incfile <<
" for import" << endl;
1788 extraHeaders.push_back(incfile);
1789 extincfile = incfile;
1790 processedInclude =
kTRUE;
1795 if (processedInclude) {
1796 decl +=
"// external include file below retrieved from workspace code storage\n" ;
1797 decl +=
Form(
"#include \"%s\"\n",extincfile) ;
1805 fstream fimpl(implpath?implpath:implfile.c_str()) ;
1810 <<
") ERROR opening implementation file " << implfile << endl ;
1819 while(fimpl.getline(buf,1023)) {
1825 char* extincfile = 0 ;
1828 if (strstr(buf,
"#include")) {
1831 strlcpy(tmp, buf, 64000);
1832 Bool_t stdinclude = strchr(buf,
'<');
1833 strtok(tmp,
" <\"");
1834 char *incfile = strtok(0,
" <>\"");
1836 if (strstr(incfile, declfilename.c_str())) {
1837 foundSelfInclude =
kTRUE;
1840 if (!stdinclude && !foundSelfInclude) {
1843 hpath +=
"/include/";
1848 <<
") scheduling include file " << incfile <<
" for import" << endl;
1849 extraHeaders.push_back(incfile);
1850 extincfile = incfile;
1851 processedInclude =
kTRUE;
1858 if (foundSelfInclude) {
1861 impl +=
"// class declaration include file below retrieved from workspace code storage\n" ;
1862 impl +=
Form(
"#include \"%s.%s\"\n",declfilebase.c_str(),declfileext.c_str()) ;
1863 }
else if (processedInclude) {
1864 impl +=
"// external include file below retrieved from workspace code storage\n" ;
1865 impl +=
Form(
"#include \"%s\"\n",extincfile) ;
1873 _fmap[declfilebase]._hfile = decl ;
1874 _fmap[declfilebase]._cxxfile = impl ;
1875 _fmap[declfilebase]._hext = declfileext ;
1878 for (list<string>::iterator ehiter = extraHeaders.begin() ; ehiter != extraHeaders.end() ; ++ehiter ) {
1882 eh.
_hname = ehiter->c_str() ;
1883 fstream fehdr(ehiter->c_str()) ;
1886 while(fehdr.getline(buf2,1023)) {
1889 if (strstr(buf2,
"#include")) {
1892 strlcpy(tmp, buf2, 64000);
1893 Bool_t stdinclude = strchr(buf,
'<');
1894 strtok(tmp,
" <\"");
1895 char *incfile = strtok(0,
" <>\"");
1900 hpath +=
"/include/";
1904 <<
") scheduling recursive include file " << incfile <<
" for import"
1906 extraHeaders.push_back(incfile);
1914 eh.
_hfile = ehimpl.c_str();
1916 _ehmap[ehiter->c_str()] = eh;
1924 <<
") code of class " << tc->
GetName()
1925 <<
" was already imported from " << (implpath?implpath:implfile.c_str())
1926 <<
" and " << (declpath?declpath:declfile.c_str()) << endl ;
1941 list<TClass*> bases ;
1943 if (baseNameList.
Length()>0) {
1944 baseNameList +=
"," ;
1956 list<TClass*>::iterator biter = bases.begin() ;
1957 while(biter!=bases.end()) {
2011 if (oldObj && !replaceExisting) {
2013 <<
object.GetName() <<
" is already in workspace and replaceExisting flag is set to false" << endl ;
2019 object.IsA()->SetDirectoryAutoAdd(0);
2030 object.IsA()->SetDirectoryAutoAdd(func);
2052 if (oldObj && !replaceExisting) {
2054 <<
object.GetName() <<
" is already in workspace and replaceExisting flag is set to false" << endl ;
2108 if (ret)
return ret ;
2112 if (ret)
return ret ;
2129 if (!gobj)
return 0 ;
2154 TFile f(fileName,recreate?
"RECREATE":
"UPDATE") ;
2169 cxcoutD(
ObjectHandling) <<
"INFO: Creating RooFactoryWSTool associated with this workspace" << endl ;
2170 _factory = make_unique<RooFactoryWSTool>(*
this);
2196 if (
TString(opts).Contains(
"t")) {
2199 if (
TString(opts).Contains(
"v")) {
2203 cout << endl <<
"RooWorkspace(" <<
GetName() <<
") " <<
GetTitle() <<
" contents" << endl << endl ;
2236 funcSet.
add(*parg) ;
2244 catfuncSet.
add(*parg) ;
2252 convResoSet.
add(*parg) ;
2254 resoSet.
add(*parg) ;
2267 funcSet.
add(*parg) ;
2272 catfuncSet.
add(*parg) ;
2293 cout <<
"variables" << endl ;
2294 cout <<
"---------" << endl ;
2295 cout << varSet << endl ;
2300 cout <<
"p.d.f.s" << endl ;
2301 cout <<
"-------" << endl ;
2317 cout <<
"analytical resolution models" << endl ;
2318 cout <<
"----------------------------" << endl ;
2335 cout <<
"functions" << endl ;
2336 cout <<
"--------" << endl ;
2351 cout <<
"category functions" << endl ;
2352 cout <<
"------------------" << endl ;
2367 cout <<
"datasets" << endl ;
2368 cout <<
"--------" << endl ;
2372 cout << data2->IsA()->
GetName() <<
"::" << data2->
GetName() << *data2->
get() << endl ;
2379 cout <<
"embedded datasets (in pdfs and functions)" << endl ;
2380 cout <<
"-----------------------------------------" << endl ;
2384 cout << data2->IsA()->
GetName() <<
"::" << data2->
GetName() << *data2->
get() << endl ;
2391 cout <<
"parameter snapshots" << endl ;
2392 cout <<
"-------------------" << endl ;
2396 cout << snap->
GetName() <<
" = (" ;
2402 cout <<
a->GetName() <<
"=" ;
2403 a->printValue(cout) ;
2404 if (
a->isConstant()) {
2408 cout <<
")" << endl ;
2417 cout <<
"named sets" << endl ;
2418 cout <<
"----------" << endl ;
2419 for (map<string,RooArgSet>::const_iterator it =
_namedSets.begin() ; it !=
_namedSets.end() ; ++it) {
2421 cout << it->first <<
":" << it->second << endl;
2430 cout <<
"generic objects" << endl ;
2431 cout <<
"---------------" << endl ;
2436 cout << ((
RooTObjWrap*)gobj)->obj()->IsA()->
GetName() <<
"::" << gobj->GetName() << endl ;
2438 cout << gobj->IsA()->
GetName() <<
"::" << gobj->
GetName() << endl ;
2447 cout <<
"study modules" << endl ;
2448 cout <<
"-------------" << endl ;
2452 cout << smobj->IsA()->
GetName() <<
"::" << smobj->
GetName() << endl ;
2460 cout <<
"embedded class code" << endl ;
2461 cout <<
"-------------------" << endl ;
2467 cout <<
"embedded precalculated expensive components" << endl ;
2468 cout <<
"-------------------------------------------" << endl ;
2484void RooWorkspace::CodeRepo::Streamer(
TBuffer &R__b)
2499 name.Streamer(R__b) ;
2500 _fmap[
name]._hext.Streamer(R__b) ;
2501 _fmap[
name]._hfile.Streamer(R__b) ;
2502 _fmap[
name]._cxxfile.Streamer(R__b) ;
2510 name.Streamer(R__b) ;
2511 _c2fmap[
name]._baseName.Streamer(R__b) ;
2512 _c2fmap[
name]._fileBase.Streamer(R__b) ;
2521 name.Streamer(R__b) ;
2522 _ehmap[
name]._hname.Streamer(R__b) ;
2523 _ehmap[
name]._hfile.Streamer(R__b) ;
2530 _compiledOK = !compileClasses() ;
2538 UInt_t count = _fmap.size() ;
2540 map<TString,ClassFiles>::iterator iter = _fmap.begin() ;
2541 while(iter!=_fmap.end()) {
2542 TString key_copy(iter->first) ;
2543 key_copy.Streamer(R__b) ;
2544 iter->second._hext.Streamer(R__b) ;
2545 iter->second._hfile.Streamer(R__b);
2546 iter->second._cxxfile.Streamer(R__b);
2552 count = _c2fmap.size() ;
2554 map<TString,ClassRelInfo>::iterator iter2 = _c2fmap.begin() ;
2555 while(iter2!=_c2fmap.end()) {
2556 TString key_copy(iter2->first) ;
2557 key_copy.Streamer(R__b) ;
2558 iter2->second._baseName.Streamer(R__b) ;
2559 iter2->second._fileBase.Streamer(R__b);
2564 count = _ehmap.size() ;
2566 map<TString,ExtraHeader>::iterator iter3 = _ehmap.begin() ;
2567 while(iter3!=_ehmap.end()) {
2568 TString key_copy(iter3->first) ;
2569 key_copy.Streamer(R__b) ;
2570 iter3->second._hname.Streamer(R__b) ;
2571 iter3->second._hfile.Streamer(R__b);
2589void RooWorkspace::Streamer(
TBuffer &R__b)
2598 while((node=fiter.
next())) {
2612 cout <<
"RooWorkspace::Streamer(" <<
GetName() <<
") " << node->IsA()->
GetName() <<
"::" << node->
GetName()
2624 map<RooAbsArg*,vector<RooAbsArg *> > extClients, extValueClients, extShapeClients ;
2632 for (
auto client : clientsTmp) {
2636 auto& bufferVec = extClients[tmparg];
2638 bufferVec.insert(bufferVec.end(), refCount, client);
2645 for (
auto vclient : clientsTmp) {
2648 <<
" has external value client link to " << vclient <<
" (" << vclient->GetName() <<
") with ref count " << tmparg->
_clientListValue.
refCount(vclient) << endl ;
2651 auto& bufferVec = extValueClients[tmparg];
2653 bufferVec.insert(bufferVec.end(), refCount, vclient);
2660 for (
auto sclient : clientsTmp) {
2663 <<
" has external shape client link to " << sclient <<
" (" << sclient->GetName() <<
") with ref count " << tmparg->
_clientListShape.
refCount(sclient) << endl ;
2666 auto& bufferVec = extShapeClients[tmparg];
2668 bufferVec.insert(bufferVec.end(), refCount, sclient);
2681 for (
auto iterx : extClients) {
2682 for (
auto client : iterx.second) {
2683 iterx.first->_clientList.Add(client);
2687 for (
auto iterx : extValueClients) {
2688 for (
auto client : iterx.second) {
2689 iterx.first->_clientListValue.Add(client);
2693 for (
auto iterx : extShapeClients) {
2694 for (
auto client : iterx.second) {
2695 iterx.first->_clientListShape.Add(client);
2711 map<TString,ClassRelInfo>::const_iterator iter = _c2fmap.begin() ;
2712 while(iter!=_c2fmap.end()) {
2716 ret += iter->first ;
2729 static const UInt_t crctab[256] = { 0x00000000,
2730 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
2731 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
2732 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
2733 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
2734 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
2735 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
2736 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
2737 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
2738 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
2739 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
2740 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
2741 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
2742 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
2743 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
2744 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
2745 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
2746 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
2747 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
2748 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
2749 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
2750 0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
2751 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
2752 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
2753 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
2754 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
2755 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
2756 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
2757 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
2758 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
2759 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
2760 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
2761 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
2762 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
2763 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
2764 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
2765 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
2766 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
2767 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
2768 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
2769 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
2770 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
2771 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
2772 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
2773 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
2774 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
2775 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
2776 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
2777 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
2778 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
2779 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
2780 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
2784 while (sz--) crc = (crc << 8) ^
UInt_t(*
data++) ^ crctab[crc >> 24];
2792 unsigned long sz = strlen(
data);
2793 switch (strlen(
data)) {
2805 return crc32(
data + 4, sz - 4, (
data[0] << 24) | (
data[1] << 16) |
2831 map<TString,ClassRelInfo>::iterator iter = _c2fmap.begin() ;
2832 while(iter!=_c2fmap.end()) {
2834 oocxcoutD(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() now processing class " << iter->first.Data() << endl ;
2839 << iter->first <<
" already in ROOT class table, skipping" << endl ;
2849 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() reusing code export directory " << dirName.c_str()
2850 <<
" to extract coded embedded in workspace" << endl ;
2853 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() creating code export directory " << dirName.c_str()
2854 <<
" to extract coded embedded in workspace" << endl ;
2856 oocoutE(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() ERROR creating code export directory " << dirName.c_str()
2857 <<
" to extract coded embedded in workspace" << endl ;
2866 if (!writeExtraHeaders) {
2867 writeExtraHeaders =
kTRUE ;
2869 map<TString,ExtraHeader>::iterator eiter = _ehmap.begin() ;
2870 while(eiter!=_ehmap.end()) {
2874 string fdname =
Form(
"%s/%s",dirName.c_str(),eiter->second._hname.Data()) ;
2875 ifstream ifdecl(fdname.c_str()) ;
2879 while (ifdecl.getline(buf, 64000)) {
2884 UInt_t crcWS = crc32(eiter->second._hfile.Data());
2885 needEHWrite = (crcFile != crcWS);
2890 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() Extracting extra header file "
2896 ofstream fdecl(fdname.c_str());
2898 oocoutE(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() ERROR opening file " << fdname
2899 <<
" for writing" << endl;
2902 fdecl << eiter->second._hfile.Data();
2911 ClassFiles& cfinfo = _fmap[iter->second._fileBase] ;
2913 oocxcoutD(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() now processing file with base " << iter->second._fileBase << endl ;
2917 oocxcoutD(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() file with base name " << iter->second._fileBase
2918 <<
" has already been extracted, skipping to next class" << endl ;
2924 string fdname =
Form(
"%s/%s.%s",dirName.c_str(),iter->second._fileBase.Data(),cfinfo.
_hext.
Data()) ;
2925 ifstream ifdecl(fdname.c_str()) ;
2929 while (ifdecl.getline(buf, 64000)) {
2935 needDeclWrite = (crcFile!=crcWS) ;
2939 if (needDeclWrite) {
2940 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() Extracting declaration code of class " << iter->first <<
", file " << fdname << endl ;
2941 ofstream fdecl(fdname.c_str()) ;
2944 << fdname <<
" for writing" << endl ;
2953 string finame =
Form(
"%s/%s.cxx",dirName.c_str(),iter->second._fileBase.Data()) ;
2954 ifstream ifimpl(finame.c_str()) ;
2958 while (ifimpl.getline(buf, 64000)) {
2964 needImplWrite = (crcFile!=crcWS) ;
2968 if (needImplWrite) {
2969 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() Extracting implementation code of class " << iter->first <<
", file " << finame << endl ;
2970 ofstream fimpl(finame.c_str()) ;
2973 << finame <<
" for writing" << endl ;
2982 oocxcoutD(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() marking code unit " << iter->second._fileBase <<
" as extracted" << endl ;
2985 oocoutI(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() Compiling code unit " << iter->second._fileBase.Data() <<
" to define class " << iter->first << endl ;
2989 oocoutE(_wspace,
ObjectHandling) <<
"RooWorkspace::CodeRepo::compileClasses() ERROR compiling class " << iter->first.Data() <<
", to fix this you can do the following: " << endl
2990 <<
" 1) Fix extracted source code files in directory " << dirName.c_str() <<
"/" << endl
2991 <<
" 2) In clean ROOT session compiled fixed classes by hand using '.x " << dirName.c_str() <<
"/ClassName.cxx+'" << endl
2992 <<
" 3) Reopen file with RooWorkspace with broken source code in UPDATE mode. Access RooWorkspace to force loading of class" << endl
2993 <<
" Broken instances in workspace will _not_ be compiled, instead precompiled fixed instances will be used." << endl
2994 <<
" 4) Reimport fixed code in workspace using 'RooWorkspace::importClassCode(\"*\",kTRUE)' method, Write() updated workspace to file and close file" << endl
2995 <<
" 5) Reopen file in clean ROOT session to confirm that problems are fixed" << endl ;
3022 coutE(
ObjectHandling) <<
"RooWorkspace::WSDir::Add(" <<
GetName() <<
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
3024 InternalAppend(
obj) ;
3035 coutE(
ObjectHandling) <<
"RooWorkspace::WSDir::Add(" <<
GetName() <<
") ERROR: Directory is read-only representation of a RooWorkspace, use RooWorkspace::import() to add objects" << endl ;
3037 InternalAppend(
obj) ;
3051 coutE(
ObjectHandling) <<
"RooWorkspace::exportToCint(" <<
GetName() <<
") WARNING: repeated calls to exportToCint() have no effect" << endl ;
3059 if (!nsname) nsname =
GetName() ;
3063 <<
") INFO: references to all objects in this workspace will be created in CINT in 'namespace " <<
_exportNSName <<
"'" << endl ;
3068 while((wobj=iter->
Next())) {
3073 while((wobj=iter->
Next())) {
3098 cxcoutD(
ObjectHandling) <<
"RooWorkspace::exportObj(" <<
GetName() <<
") INFO: Workspace object name " << wobj->
GetName() <<
" is not a valid C++ identifier and is not exported to CINT" << endl ;
3104 gROOT->ProcessLine(cintExpr.c_str()) ;
3114 string oname(
name) ;
3115 if (isdigit(oname[0])) {
3118 for (
UInt_t i=0 ; i<oname.size() ; i++) {
3120 if (!isalnum(
c) && (
c!=
'_')) {
3136 while ((wobj = iter->
Next())) {
3152 if (removedObj ==
_dir)
_dir =
nullptr;
3164 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...
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 base class for objects that represent a discrete value with a finite number of ...
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
Bool_t containsInstance(const RooAbsArg &var) const
Check if this exact instance is in this collection.
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.
RooFIter fwdIterator() const
One-time forward iterator.
void useHashMapForFind(bool flag) const
Install an internal hash map for fast finding of elements by name.
const char * GetName() const
Returns name of object.
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.
TIterator * createIterator(Bool_t dir=kIterForward) const
TIterator-style iteration over contained elements.
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 is an object to represent discrete states.
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.
Int_t getHashTableSize() const
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)
void setHashTableSize(Int_t size)
Change the threshold for hash-table use to given size.
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.
const char * GetImplFileName() const
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
Long_t Property() const
Returns the properties of the TClass as a bit field stored as a Long_t value.
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
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 * 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 *)
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.
std::vector< std::string > tokenise(const std::string &str, const std::string &delims, bool returnEmptyToken=true)
Tokenise the string by splitting at the characters in delims.
static constexpr double pc