75#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3)
95 _prohibitServerRedirect(
kFALSE), _eocache(0), _namePtr(0), _isConstant(
kFALSE), _localNoInhibitDirty(
kFALSE),
112 _ownedComponents(0), _prohibitServerRedirect(
kFALSE), _eocache(0), _namePtr(0), _isConstant(
kFALSE),
113 _localNoInhibitDirty(
kFALSE), _myws(0)
128 _stringAttrib(other._stringAttrib), _deleteWatch(other._deleteWatch), _operMode(Auto), _fast(
kFALSE),
129 _ownedComponents(0), _prohibitServerRedirect(
kFALSE), _eocache(other._eocache), _namePtr(other._namePtr),
130 _isConstant(other._isConstant), _localNoInhibitDirty(other._localNoInhibitDirty), _myws(0)
145 Bool_t valueProp, shapeProp ;
146 while ((server = sIter.
next())) {
179 while ((client=clientIter.
next())) {
181 TString attr(
"ServerDied:");
190 cxcoutD(
Tracing) <<
"RooAbsArg::dtor(" <<
GetName() <<
"," <<
this <<
") DeleteWatch: object is being destroyed" << endl ;
195 << client->
GetName() <<
"\" should have been deleted first" << endl ;
244 if(
string(
"Constant")==
name) {
288 map<string,string>::const_iterator iter =
_stringAttrib.find(key) ;
290 return iter->second.c_str() ;
339 <<
"): PROHIBITED SERVER ADDITION REQUESTED: adding server " << server.
GetName()
340 <<
"(" << &server <<
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
345 <<
"(" << &server <<
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
375 while ((arg=iter.
next())) {
389 cxcoutF(
LinkStateMgmt) <<
"RooAbsArg::addServer(" <<
this <<
"," <<
GetName() <<
"): PROHIBITED SERVER REMOVAL REQUESTED: removing server "
390 << server.
GetName() <<
"(" << &server <<
")" << endl ;
396 << server.
GetName() <<
"(" << &server <<
")" << endl ;
424 addServer(newServer, propValue, propShape);
436 << server.
GetName() <<
" not registered" << endl ;
443 << server.
GetName() <<
" doesn't have us registered as client" << endl ;
501 if ((doBranch&&doLeaf) ||
513 while ((server=sIter.
next())) {
517 if (valueOnly && !isValueSrv) {
550 while((server=siter.
next())) {
553 if (!nset || !server->
dependsOn(*nset)) {
554 nodeParamServers.
add(*server) ;
557 nodeBranchServers.
add(*server) ;
566 params.
add(nodeParamServers,
kTRUE) ;
570 while((server=biter.
next())) {
642 if (!dataList)
return depList ;
645 RooArgSet leafList(
"leafNodeServerList") ;
652 while ((arg=sIter.
next())) {
658 while ((arg=sIter.
next())) {
686 name.Append(
"_components") ;
718 while((arg=iter.
next())) {
721 << arg->
GetName() <<
" no longer exists!" << endl ;
743 while ((server=sIter.
next())) {
744 if (
dependsOn(*server,ignoreArg,valueOnly)) {
759 if (
this==ignoreArg)
return kFALSE ;
778 while ((server=sIter.
next())) {
781 if (server->
dependsOn(testArg,ignoreArg,valueOnly)) {
847 }
else if (source==
this) {
850 <<
"): cyclical dependency detected, source = " << source->
GetName() << endl ;
858 <<
"): dirty flag " << (
_valueDirty?
"already ":
"") <<
"raised" << endl ;
866 while ((client=clientValueIter.
next())) {
882 <<
"): dirty flag " << (
_shapeDirty?
"already ":
"") <<
"raised" << endl ;
893 }
else if (source==
this) {
896 <<
"): cyclical dependency detected" << endl ;
905 while ((client=clientShapeIter.
next())) {
935 while((arg=iter.
next())) {
937 if (
string(
"REMOVAL_DUMMY")==arg->
GetName()) {
961 RooLinkedList origServerList, origServerValue, origServerShape ;
964 while ((oldServer=sIter.
next())) {
965 origServerList.
Add(oldServer) ;
969 origServerValue.
Add(oldServer) ;
972 origServerShape.
Add(oldServer) ;
978 Bool_t propValue, propShape ;
979 while ((oldServer=sIter.
next())) {
985 <<
" redirected from " << oldServer <<
" to " << newServer << endl ;
989 if (mustReplaceAll) {
991 <<
" (" << (
void*)oldServer <<
") not redirected" << (nameChange?
"[nameChange]":
"") << endl ;
1000 if (newServer !=
this) {
1015 allReplaced &= ret2 ;
1018 if (mustReplaceAll && !allReplaced) {
1020 <<
"): ERROR, some proxies could not be adjusted" << endl ;
1047 newServer = newSet.
find(*
this) ;
1052 TString nameAttrib(
"ORIGNAME:") ;
1053 nameAttrib.Append(
GetName()) ;
1067 << nameAttrib <<
" attribute" << endl ;
1073 newServer= tmp->
first();
1092 static std::set<const RooAbsArg*> callStack;
1094 std::set<const RooAbsArg*>::iterator it = callStack.lower_bound(
this);
1095 if (it != callStack.end() &&
this == *it) {
1098 callStack.insert(it,
this);
1111 cxcoutD(
LinkStateMgmt) <<
"RooAbsArg::recursiveRedirectServers(" <<
this <<
"," <<
GetName() <<
") newSet = " << newSet <<
" mustReplaceAll = "
1112 << (mustReplaceAll?
"T":
"F") <<
" nameChange = " << (nameChange?
"T":
"F") <<
" recurseInNewSet = " << (recurseInNewSet?
"T":
"F") << endl ;
1120 while((server=sIter.
next())) {
1124 callStack.erase(
this);
1143 <<
" already registered" << endl ;
1184 << proxy.
GetName() <<
" already registered" << endl ;
1217 << proxy.
GetName() <<
" already registered" << endl ;
1225 cout <<
"RooAbsArg::registerProxy(" <<
GetName() <<
") proxy registration failure! nold=" << nProxyOld <<
" nnew=" <<
_proxyList.
GetEntries() << endl ;
1288 <<
"): Cannot be attached to a TTree" << endl ;
1329 os << IsA()->GetName() ;
1352 if (p==0) continue ;
1353 if (!TString(p->
name()).BeginsWith(
"!")) {
1379 os << indent <<
"--- RooAbsArg ---" << endl;
1381 os << indent <<
" Value State: " ;
1383 case ADirty: os <<
"FORCED DIRTY" ; break ;
1384 case AClean: os <<
"FORCED clean" ; break ;
1388 << indent <<
" Shape State: " << (
isShapeDirty() ?
"DIRTY":
"clean") << endl;
1390 os << indent <<
" Attributes: " ;
1394 os << indent <<
" Address: " << (
void*)
this << endl;
1396 os << indent <<
" Clients: " << endl;
1399 while ((client=clientIter.
next())) {
1400 os << indent <<
" (" << (
void*)client <<
","
1408 os << indent <<
" Servers: " << endl;
1411 while ((server=serverIter.
next())) {
1412 os << indent <<
" (" << (
void*)server <<
","
1420 os << indent <<
" Proxies: " << endl ;
1423 if (!proxy) continue ;
1425 os << indent <<
" " << proxy->
name() <<
" -> " ;
1430 os <<
" (empty)" << endl ; ;
1433 os << indent <<
" " << proxy->
name() <<
" -> " ;
1435 TString moreIndent(indent) ;
1436 moreIndent.Append(
" ") ;
1475 set<string>::const_iterator iter =
_boolAttrib.begin() ;
1478 os << (
first?
" [":
",") << *iter ;
1482 if (!
first) os <<
"] " ;
1497 while((branch=iter.
next())) {
1516 while((branch=iter.
next())) {
1547 while((branch=bIter.
next())) {
1554 case AClean: cout <<
"FORCED clean" ; break ;
1555 case ADirty: cout <<
"FORCED DIRTY" ; break ;
1577 coutI(
Optimization) <<
"RooAbsArg::optimizeCacheMode(" <<
GetName() <<
") nodes " << opt <<
" depend on observables, "
1578 <<
"changing cache operation mode from change tracking to unconditional evaluation" << endl ;
1599 if (processedNodes.
findArg(
this)) {
1602 processedNodes.
Add(
this) ;
1609 cxcoutI(
Integration) <<
"RooAbsArg::optimizeCacheMode(" <<
GetName() <<
") integral depends on value of one or more observables and will be evaluated for every event" << endl ;
1626 while((server=sIter.
next())) {
1643 << cacheList <<
" depend exclusively on constant parameters and will be precalculated and cached" << endl ;
1662 if (processedNodes.
findArg(
this)) {
1665 processedNodes.
Add(
this) ;
1673 while((param = iter.
next())) {
1708 while((server=sIter.
next())) {
1735 while((server=sIter.
next())) {
1759 if (mode==
ADirty && recurseADirty) {
1762 while((client=iter.
next())) {
1778 ofstream ofs(filename) ;
1794 if ( !namePat || TString(
GetName()).Contains(namePat)) {
1795 os << indent << this ;
1803 os << IsA()->GetName() <<
"::" <<
GetName() <<
" = " ;
1808 case Auto: os <<
" [Auto," << (
isValueDirty()?
"Dirty":
"Clean") <<
"] " ; break ;
1809 case AClean: os <<
" [ACLEAN] " ; break ;
1810 case ADirty: os <<
" [ADIRTY] " ; break ;
1821 TString indent2(indent) ;
1825 while((arg=iter.
next())) {
1839 if (nLevel==0) return ;
1845 if ( !namePat || TString(
GetName()).Contains(namePat)) {
1850 TString indent2(indent) ;
1854 while((arg=iter.
next())) {
1867 TString rawBranchName =
GetName() ;
1872 TString cleanName(rawBranchName) ;
1873 cleanName.ReplaceAll(
"/",
"D") ;
1874 cleanName.ReplaceAll(
"-",
"M") ;
1875 cleanName.ReplaceAll(
"+",
"P") ;
1876 cleanName.ReplaceAll(
"*",
"X") ;
1877 cleanName.ReplaceAll(
"[",
"L") ;
1878 cleanName.ReplaceAll(
"]",
"R") ;
1879 cleanName.ReplaceAll(
"(",
"L") ;
1880 cleanName.ReplaceAll(
")",
"R") ;
1881 cleanName.ReplaceAll(
"{",
"L") ;
1882 cleanName.ReplaceAll(
"}",
"R") ;
1884 if (cleanName.Length()<=60)
return cleanName ;
1887 static char buf[1024] ;
1888 strlcpy(buf,cleanName.Data(),1024) ;
1889 snprintf(buf+46,1024-46,
"_CRC%08x",
crc32(cleanName.Data())) ;
1891 return TString(buf) ;
1901 unsigned long sz = strlen(
data);
1902 switch (strlen(
data)) {
1925 static const UInt_t crctab[256] = { 0x00000000,
1926 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
1927 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
1928 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
1929 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
1930 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
1931 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
1932 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
1933 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
1934 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
1935 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
1936 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
1937 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
1938 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
1939 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
1940 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
1941 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
1942 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
1943 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
1944 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
1945 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
1946 0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
1947 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
1948 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
1949 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
1950 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
1951 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
1952 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
1953 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
1954 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
1955 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
1956 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
1957 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
1958 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
1959 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
1960 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
1961 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
1962 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
1963 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
1964 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
1965 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
1966 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
1967 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
1968 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
1969 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
1970 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
1971 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
1972 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
1973 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
1974 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
1975 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
1976 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
1980 while (sz--) crc = (crc << 8) ^
UInt_t(*
data++) ^ crctab[crc >> 24];
1994 const UInt_t fnv1a32mult = 16777619u;
1997 hash *= fnv1a32mult;
2014 hash *= fnv1a64mult;
2088 set<string>::const_iterator iter=
_boolAttrib.begin() ;
2090 if (TString(*iter).BeginsWith(
"CloneOf(")) {
2092 strlcpy(buf,iter->c_str(),128) ;
2094 char* ptrToken = strtok(0,
")") ;
2113 ofstream ofs(fileName) ;
2115 coutE(
InputArguments) <<
"RooAbsArg::graphVizTree() ERROR: Cannot open graphViz output file with name " << fileName << endl ;
2130 coutE(
InputArguments) <<
"RooAbsArg::graphVizTree() ERROR: output stream provided as input argument is in invalid state" << endl ;
2134 os <<
"digraph " <<
GetName() <<
"{" << endl ;
2143 while((node=iter.
next())) {
2144 string nodeName = node->
GetName();
2145 string nodeTitle = node->
GetTitle();
2146 string nodeLabel = (useTitle && !nodeTitle.empty()) ? nodeTitle : nodeName;
2149 string::size_type position = nodeLabel.find(
"#") ;
2150 while(useLatex && position!=nodeLabel.npos){
2151 nodeLabel.replace(position, 1,
"\\");
2154 string typeFormat =
"\\texttt{";
2155 string nodeType = (useLatex) ? typeFormat+node->IsA()->
GetName()+
"}" : node->IsA()->
GetName();
2157 os <<
"\"" << nodeName <<
"\" [ color=" << (node->
isFundamental()?
"blue":
"red")
2158 <<
", label=\"" << nodeType << delimiter << nodeLabel <<
"\"];" << endl ;
2163 set<pair<RooAbsArg*,RooAbsArg*> > links ;
2167 set<pair<RooAbsArg*,RooAbsArg*> >::iterator
liter = links.begin() ;
2169 os <<
"\"" <<
liter->first->GetName() <<
"\" -> \"" <<
liter->second->GetName() <<
"\";" << endl ;
2186 while((server=sIter.
next())) {
2187 linkSet.insert(make_pair(
this,server)) ;
2298 clonedNodes->
remove(*head) ;
2305 delete clonedNodes ;
2309 head->TNamed::SetName(newname) ;
2354 while((arg=iter.
next())) {
2356 if (tmp) suffix += tmp ;
2358 return Form(
"%s",suffix.c_str()) ;
2370 while((arg=iter.
next())) {
2372 for (deque<RooAbsCache*>::iterator iter2 = arg->
_cacheList.begin() ; iter2 != arg->
_cacheList.end() ; ++iter2) {
2373 (*iter2)->wireCache() ;
2413void RooAbsArg::Streamer(
TBuffer &R__b)
2441 map<RooAbsArg*,TRefArray*>::iterator iter =
_ioEvoList.find(
this) ;
2447 for (
int i = 0; i < iter->second->GetEntriesFast(); i++) {
2451 delete iter->second ;
2471 map<RooAbsArg*,TRefArray*>::iterator iter =
_ioEvoList.begin() ;
2475 if (!iter->first->_proxyList.GetEntriesFast())
2476 iter->first->_proxyList.Expand(iter->second->GetEntriesFast());
2477 for (
int i = 0; i < iter->second->GetEntriesFast(); i++) {
2478 iter->first->_proxyList.Add(iter->second->At(i));
2482 map<RooAbsArg*,TRefArray*>::iterator iter_tmp = iter ;
2487 delete iter_tmp->second ;
2498void RooRefArray::Streamer(
TBuffer &R__b)
2507 refArray->Streamer(R__b) ;
2520 TObject* tmpObj ;
while ((tmpObj = iter->
Next())) {
2521 refArray.
Add(tmpObj) ;
2525 refArray.Streamer(R__b) ;
2535 std::stringstream
s;
2537 s <<
"An instance of " << raa->
ClassName() <<
".";
istream & operator>>(istream &is, RooAbsArg &arg)
Istream operator.
ostream & operator<<(ostream &os, RooAbsArg &arg)
Ostream operator.
unsigned long long ULong64_t
char * Form(const char *fmt,...)
TString operator+(const TString &s1, const TString &s2)
Use the special concatenation constructor.
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
RooExpensiveObjectCache & expensiveObjectCache() const
static std::stack< RooAbsArg * > _ioReadStack
virtual Bool_t checkObservables(const RooArgSet *nset) const
Overloadable function in which derived classes can implement consistency checks of the variables.
virtual RooAbsArg * cloneTree(const char *newname=0) const
Clone tree expression of objects.
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
virtual Bool_t readFromStream(std::istream &is, Bool_t compact, Bool_t verbose=kFALSE)=0
virtual Bool_t isValid() const
WVE (08/21/01) Probably obsolete now.
static UInt_t crc32(const char *data)
static void verboseDirty(Bool_t flag)
Activate verbose messaging related to dirty flag propagation.
void attachToStore(RooAbsDataStore &store)
virtual Int_t defaultPrintContents(Option_t *opt) const
Define default contents to print.
const TNamed * namePtr() const
const char * aggregateCacheUniqueSuffix() const
Bool_t redirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t isRecursionStep=kFALSE)
Iterator over _clientListValue.
virtual Bool_t isLValue() const
void changeServer(RooAbsArg &server, Bool_t valueProp, Bool_t shapeProp)
Change dirty flag propagation mask for specified server.
void addServer(RooAbsArg &server, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE)
Register another RooAbsArg as a server to us, ie, declare that we depend on it.
Bool_t isValueServer(const RooAbsArg &arg) const
RooRefCountList _serverList
virtual Bool_t redirectServersHook(const RooAbsCollection &, Bool_t, Bool_t, Bool_t)
RooWorkspace * _myws
Prevent 'AlwaysDirty' mode for this node.
void printCompactTree(const char *indent="", const char *fileName=0, const char *namePat=0, RooAbsArg *client=0)
Print tree structure of expression tree on stdout, or to file if filename is specified.
void attachDataStore(const RooAbsDataStore &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
virtual void printClassName(std::ostream &os) const
Print object class name.
RooArgSet * _ownedComponents
std::deque< RooAbsCache * > _cacheList
Bool_t dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0, Bool_t valueOnly=kFALSE) const
Test whether we depend on (ie, are served by) any object in the specified collection.
void registerProxy(RooArgProxy &proxy)
Register an RooArgProxy in the proxy list.
RooFIter valueClientMIterator() const
RooRefCountList _clientListValue
RooRefCountList _clientListShape
Bool_t isShapeServer(const RooAbsArg &arg) const
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 leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Implement multi-line detailed printing.
Bool_t isCloneOf(const RooAbsArg &other) const
Check if this object was created as a clone of 'other'.
Bool_t isShapeDirty() const
static void setDirtyInhibit(Bool_t flag)
Control global dirty inhibit mode.
Bool_t findConstantNodes(const RooArgSet &observables, RooArgSet &cacheList)
Find branch nodes with all-constant parameters, and add them to the list of nodes that can be cached ...
void graphVizAddConnections(std::set< std::pair< RooAbsArg *, RooAbsArg * > > &)
Utility function that inserts all point-to-point client-server connections between any two RooAbsArgs...
void unRegisterProxy(RooArgProxy &proxy)
Remove proxy from proxy list.
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.
Bool_t inhibitDirty() const
Delete watch flag.
TIterator * _clientShapeIter
std::set< std::string > _boolAttrib
virtual void printTree(std::ostream &os, TString indent="") const
Print object tree structure.
void unRegisterCache(RooAbsCache &cache)
Unregister a RooAbsCache. Called from the RooAbsCache destructor.
virtual Bool_t isFundamental() const
virtual void printTitle(std::ostream &os) const
Print object title.
void printAttribList(std::ostream &os) const
Transient boolean attributes (not copied in ctor)
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
const Text_t * getStringAttribute(const Text_t *key) const
Get string attribute mapped under key 'key'.
void treeNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t doBranch=kTRUE, Bool_t doLeaf=kTRUE, Bool_t valueOnly=kFALSE, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with nodes of the arg tree, following all server links, starting with ourself as t...
RooArgSet * getParameters(const RooAbsData *data, Bool_t stripDisconnected=kTRUE) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
void setAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
virtual void writeToStream(std::ostream &os, Bool_t compact) const =0
virtual void printAddress(std::ostream &os) const
Print class name of object.
RooFIter serverMIterator() const
void setTransientAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
static std::map< RooAbsArg *, TRefArray * > _ioEvoList
virtual void printCompactTreeHook(std::ostream &os, const char *ind="")
Hook function interface for object to insert additional information when printed in the context of a ...
Bool_t _isConstant
Do not persist. Pointer to global instance of string that matches object named.
Bool_t isValueDirty() const
Bool_t overlaps(const RooAbsArg &testArg, Bool_t valueOnly=kFALSE) const
Test if any of the nodes of tree are shared with that of the given tree.
Int_t Compare(const TObject *other) const
Utility function used by TCollection::Sort to compare contained TObjects We implement comparison by n...
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual void ioStreamerPass2()
In which workspace do I live, if any.
virtual ~RooAbsArg()
Destructor.
virtual Bool_t isDerived() const
static Bool_t _inhibitDirty
virtual const char * cacheUniqueSuffix() const
static UInt_t fnv1a32(const char *data)
Bool_t _localNoInhibitDirty
Cached isConstant status.
virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt=kTRUE)
Interface function signaling a request to perform constant term optimization.
void setOperMode(OperMode mode, Bool_t recurseADirty=kTRUE)
Change cache operation mode to given mode.
virtual void attachToTree(TTree &t, Int_t bufSize=32000)=0
Overloadable function for derived classes to implement attachment as branch to a TTree.
RooLinkedList getCloningAncestors() const
Return ancestors in cloning chain of this RooAbsArg.
Bool_t addOwnedComponents(const RooArgSet &comps)
Take ownership of the contents of 'comps'.
Bool_t recursiveCheckObservables(const RooArgSet *nset) const
Recursively call checkObservables on all nodes in the expression tree.
RooAbsCache * getCache(Int_t index) const
Return registered cache object by index.
void printDirty(Bool_t depth=kTRUE) const
Print information about current value dirty state information.
static Bool_t _verboseDirty
void registerCache(RooAbsCache &cache)
Register RooAbsCache with this object.
virtual void optimizeCacheMode(const RooArgSet &observables)
Activate cache mode optimization with given definition of observables.
virtual void attachToVStore(RooVectorDataStore &vstore)=0
TString cleanBranchName() const
Construct a mangled name from the actual name that is free of any math symbols that might be interpre...
void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
static ULong64_t fnv1a64(const char *data)
Bool_t _prohibitServerRedirect
Set of owned component.
void removeServer(RooAbsArg &server, Bool_t force=kFALSE)
Unregister another RooAbsArg as a server to us, ie, declare that we no longer depend on its value and...
Int_t numProxies() const
Return the number of registered proxies.
TIterator * _clientValueIter
Iterator over _clientListShape.
void setShapeDirty() const
Bool_t getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
virtual void printName(std::ostream &os) const
Print object name.
void replaceServer(RooAbsArg &oldServer, RooAbsArg &newServer, Bool_t valueProp, Bool_t shapeProp)
Replace 'oldServer' with 'newServer'.
virtual void getParametersHook(const RooArgSet *, RooArgSet *, Bool_t) const
virtual void printMetaArgs(std::ostream &) const
void addServerList(RooAbsCollection &serverList, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE)
Register a list of RooAbsArg as servers to us by calls addServer() for each arg in the list.
Bool_t dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0) const
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
RooExpensiveObjectCache * _eocache
Prohibit server redirects – Debugging tool.
RooArgSet * getComponents() const
std::set< std::string > _boolAttribTransient
RooAbsArg * findNewServer(const RooAbsCollection &newSet, Bool_t nameChange) const
Find the new server in the specified set that matches the old server.
Bool_t isConstant() const
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 graphVizTree(const char *fileName, const char *delimiter="\n", bool useTitle=false, bool useLatex=false)
Create a GraphViz .dot file visualizing the expression tree headed by this RooAbsArg object.
virtual void operModeHook()
Bool_t getTransientAttribute(const Text_t *name) const
Check if a named attribute is set.
std::map< std::string, std::string > _stringAttrib
Int_t numCaches() const
Return number of registered caches.
RooAbsArg()
Default constructor.
void setValueDirty() const
Bool_t recursiveRedirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t recurseInNewSet=kTRUE)
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
virtual void printArgs(std::ostream &os) const
Print object arguments, ie its proxies.
RooAbsArg * findServer(const char *name) const
void SetName(const char *name)
Set the name of the TNamed.
void addParameters(RooArgSet ¶ms, const RooArgSet *nset=0, Bool_t stripDisconnected=kTRUE) const
INTERNAL helper function for getParameters()
OperMode operMode() const
RooRefCountList _clientList
Bool_t observableOverlaps(const RooAbsData *dset, const RooAbsArg &testArg) const
Test if any of the dependents of the arg tree (as determined by getObservables) overlaps with those o...
RooAbsCache is the abstract base class for data members of RooAbsArgs that cache other (composite) Ro...
virtual void printCompactTreeHook(std::ostream &, const char *)
Interface for printing of cache guts in tree mode printing.
virtual Bool_t redirectServersHook(const RooAbsCollection &, Bool_t, Bool_t, Bool_t)
Interface for server redirect calls.
virtual void optimizeCacheMode(const RooArgSet &, RooArgSet &, RooLinkedList &)
Interface for processing of cache mode optimization calls.
virtual void operModeHook()
Interface for operation mode changes.
virtual void findConstantNodes(const RooArgSet &, RooArgSet &, RooLinkedList &)
Interface for constant term node finding calls.
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooFIter fwdIterator() const
void sort(Bool_t ascend=kTRUE)
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
RooAbsArg * first() const
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself.
RooAbsCollection * selectByAttrib(const char *name, Bool_t value) const
Create a subset of the current collection, consisting only of those elements with the specified attri...
const char * GetName() const
Returns name of object.
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.
RooAbsDataStore is the abstract base class for data collection that use a TTree as internal storage m...
virtual const RooArgSet * get(Int_t index) const =0
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
RooAbsProxy is the abstact interface for proxy classes.
virtual void changeNormSet(const RooArgSet *newNormSet)
Destructor.
virtual void print(std::ostream &os, Bool_t addContents=kFALSE) const
Print proxy name.
virtual const char * name() const
virtual Bool_t changePointer(const RooAbsCollection &newServerSet, Bool_t nameChange=kFALSE, Bool_t factoryInitMode=kFALSE)=0
RooArgProxy is the abstact interface for RooAbsArg proxy classes.
Bool_t isShapeServer() const
Bool_t isValueServer() const
RooAbsArg * absArg() const
RooArgSet is a container object that can hold multiple RooAbsArg objects.
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...
RooConstVar represent a constant real-valued object.
RooExpensiveObjectCache is a singleton class that serves as repository for objects that are expensive...
static RooExpensiveObjectCache & instance()
Return reference to singleton instance.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
TIterator * MakeIterator(Bool_t dir=kTRUE) const
Return an iterator over this list.
Int_t getHashTableSize() const
RooFIter fwdIterator() const
RooAbsArg * findArg(const RooAbsArg *) const
Return pointer to object with given name in collection.
virtual void Add(TObject *arg)
void setHashTableSize(Int_t size)
Change the threshold for hash-table use to given size.
RooListProxy is the concrete proxy for RooArgList objects.
const TNamed * constPtr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
static RooNameReg & instance()
Return reference to singleton instance.
RooNameSet is a utility class that stores the names the objects in a RooArget.
const char * content() const
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
virtual StyleOption defaultPrintStyle(Option_t *opt) const
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer,...
virtual void printValue(std::ostream &os) const
Interface to print value of object.
RooRealIntegral performs hybrid numerical/analytical integrals of RooAbsReal objects.
RooRealVar represents a fundamental (non-derived) real valued object.
A RooRefCountList is a RooLinkedList that keeps a reference counter with each added node.
Int_t refCount(TObject *obj)
Return reference count associated with 'obj'.
virtual void Add(TObject *arg)
virtual Bool_t RemoveAll(TObject *obj)
Remove object from list and delete object itself regardless of reference count.
virtual Bool_t Remove(TObject *obj)
Remove object from list and if reference count reaches zero delete object itself as well.
RooSetProxy is the concrete proxy for RooArgSet objects.
RooTreeDataStore is the abstract base class for data collection that use a TTree as internal storage ...
RooVectorDataStore is the abstract base class for data collection that use a TTree as internal storag...
Bool_t defineSetInternal(const char *name, const RooArgSet &aset)
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...
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
Iterator abstract base class.
virtual TObject * Next()=0
The TNamed class is the base class for all named ROOT classes.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
Int_t GetEntriesFast() const
virtual void Expand(Int_t newSize)
Expand or shrink the array to newSize elements.
virtual void Compress()
Remove empty slots from array.
Int_t GetEntries() const
Return the number of objects in array (i.e.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
TIterator * MakeIterator(Bool_t dir=kIterForward) const
Returns an array iterator.
virtual TObject * Remove(TObject *obj)
Remove object from array.
TObject * At(Int_t idx) const
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
An array of references to TObjects.
std::string GetName(const std::string &scope_name)
static constexpr double s
static constexpr double liter
Print a TSeq at the prompt:
std::string printValue(const TDatime *val)
Print a TDatime at the prompt.