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