105#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3)
116std::map<RooAbsArg*,std::unique_ptr<TRefArray>> RooAbsArg::_ioEvoList;
117std::stack<RooAbsArg*> RooAbsArg::_ioReadStack ;
125 _prohibitServerRedirect(
kFALSE), _namePtr(0), _isConstant(
kFALSE), _localNoInhibitDirty(
kFALSE),
139 _ownedComponents(0), _prohibitServerRedirect(
kFALSE), _namePtr(0), _isConstant(
kFALSE),
140 _localNoInhibitDirty(
kFALSE), _myws(0)
142 if (
name ==
nullptr || strlen(
name) == 0) {
143 throw std::logic_error(
"Each RooFit object needs a name. "
144 "Objects representing the same entity (e.g. an observable 'x') are identified using their name.");
155 _boolAttrib(other._boolAttrib),
156 _stringAttrib(other._stringAttrib), _deleteWatch(other._deleteWatch), _operMode(Auto), _fast(
kFALSE),
157 _ownedComponents(0), _prohibitServerRedirect(
kFALSE),
159 _isConstant(other._isConstant), _localNoInhibitDirty(other._localNoInhibitDirty), _myws(0)
163 Bool_t valueProp, shapeProp ;
165 valueProp = server->_clientListValue.containsByNamePtr(&other);
166 shapeProp = server->_clientListShape.containsByNamePtr(&other);
196 bool valueProp, shapeProp;
198 valueProp = server->_clientListValue.containsByNamePtr(&other);
199 shapeProp = server->_clientListShape.containsByNamePtr(&other);
223 for (
auto client : clientListTmp) {
224 client->setAttribute(
"ServerDied") ;
227 attr.Append(
Form(
"(%zx)",(
size_t)
this)) ;
228 client->setAttribute(
attr.Data());
229 client->removeServer(*
this,
kTRUE);
234 cxcoutD(
Tracing) <<
"RooAbsArg::dtor(" <<
GetName() <<
"," <<
this <<
") DeleteWatch: object is being destroyed" << endl ;
239 << client->GetName() <<
"\" should have been deleted first" << endl ;
285 if(
string(
"Constant")==
name) {
329 map<string,string>::const_iterator iter =
_stringAttrib.find(key) ;
331 return iter->second.c_str() ;
383 <<
"): PROHIBITED SERVER ADDITION REQUESTED: adding server " << server.
GetName()
384 <<
"(" << &server <<
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
385 throw std::logic_error(
"PROHIBITED SERVER ADDITION REQUESTED in RooAbsArg::addServer");
389 <<
"(" << &server <<
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
419 for (
const auto arg : serverList) {
433 cxcoutF(
LinkStateMgmt) <<
"RooAbsArg::addServer(" <<
this <<
"," <<
GetName() <<
"): PROHIBITED SERVER REMOVAL REQUESTED: removing server "
434 << server.
GetName() <<
"(" << &server <<
")" << endl ;
440 << server.
GetName() <<
"(" << &server <<
")" << endl ;
459 addServer(newServer, propValue, propShape, count);
470 << server.
GetName() <<
" not registered" << endl ;
477 << server.
GetName() <<
" doesn't have us registered as client" << endl ;
539 if ((doBranch&&doLeaf) ||
552 Bool_t isValueSrv = server->_clientListValue.containsByNamePtr(arg);
553 if (valueOnly && !isValueSrv) {
585 std::vector<RooAbsArg*> branchList;
587 if (server->isValueServer(*
this)) {
588 if (server->isFundamental()) {
589 if (!nset || !server->dependsOn(*nset)) {
590 nodeParamServers.
add(*server);
593 branchList.push_back(server);
602 params.
add(nodeParamServers,
kTRUE) ;
605 std::sort(branchList.begin(), branchList.end());
606 const auto last = std::unique(branchList.begin(), branchList.end());
607 for (
auto serverIt = branchList.begin(); serverIt < last; ++serverIt) {
608 (*serverIt)->addParameters(params, nset);
624 std::vector<RooAbsArg*> branchList;
626 if (server->isValueServer(*
this)) {
627 if (server->isFundamental()) {
628 if (!nset || !server->dependsOn(*nset)) {
632 branchList.push_back(server);
638 std::sort(branchList.begin(), branchList.end());
639 const auto last = std::unique(branchList.begin(), branchList.end());
640 for (
auto serverIt = branchList.begin(); serverIt < last; ++serverIt) {
641 res += (*serverIt)->getParametersSizeEstimate(nset);
679 outputSet.
add(*paramSet);
685 outputSet.
setName(
"parameters");
696 outputSet.
add(tempList,
true);
753 outputSet.
setName(
"dependents");
755 if (!dataList)
return false;
758 RooArgSet leafList(
"leafNodeServerList") ;
762 for (
const auto arg : leafList) {
763 if (arg->dependsOnValue(*dataList) && arg->isLValue()) {
764 outputSet.
add(*arg) ;
768 for (
const auto arg : leafList) {
769 if (arg->dependsOn(*dataList) && arg->isLValue()) {
770 outputSet.
add(*arg) ;
785 name.Append(
"_components") ;
817 while((arg=iter.
next())) {
820 << arg->
GetName() <<
" no longer exists!" << endl ;
840 for (
auto server : serverList) {
841 if (
dependsOn(*server,ignoreArg,valueOnly)) {
856 if (
this==ignoreArg)
return kFALSE ;
875 if ( !valueOnly || server->isValueServer(*
this)) {
876 if (server->dependsOn(testArg,ignoreArg,valueOnly)) {
944 }
else if (source==
this) {
947 <<
"): cyclical dependency detected, source = " << source->
GetName() << endl ;
955 <<
"): dirty flag " << (
_valueDirty?
"already ":
"") <<
"raised" << endl ;
962 client->setValueDirty(source) ;
977 <<
"): dirty flag " << (
_shapeDirty?
"already ":
"") <<
"raised" << endl ;
988 }
else if (source==
this) {
991 <<
"): cyclical dependency detected" << endl ;
999 client->setShapeDirty(source) ;
1000 client->setValueDirty(source) ;
1042 for (
auto arg : newSetOrig) {
1044 if (
string(
"REMOVAL_DUMMY")==arg->GetName()) {
1046 if (arg->getAttribute(
"REMOVE_ALL")) {
1063 std::vector<RooAbsArg*> origServerList, origServerValue, origServerShape;
1065 origServerList.reserve(origSize);
1066 origServerValue.reserve(origSize);
1069 origServerList.push_back(oldServer) ;
1072 if (oldServer->_clientListValue.containsByNamePtr(
this)) {
1073 origServerValue.push_back(oldServer) ;
1075 if (oldServer->_clientListShape.containsByNamePtr(
this)) {
1076 origServerShape.push_back(oldServer) ;
1081 for (
auto oldServer : origServerList) {
1086 cxcoutD(
LinkStateMgmt) <<
"RooAbsArg::redirectServers(" << (
void*)
this <<
"," <<
GetName() <<
"): server " << oldServer->GetName()
1087 <<
" redirected from " << oldServer <<
" to " << newServer << endl ;
1091 if (mustReplaceAll) {
1092 coutE(
LinkStateMgmt) <<
"RooAbsArg::redirectServers(" << (
void*)
this <<
"," <<
GetName() <<
"): server " << oldServer->GetName()
1093 <<
" (" << (
void*)oldServer <<
") not redirected" << (nameChange?
"[nameChange]":
"") << endl ;
1099 auto findByNamePtr = [&oldServer](
const RooAbsArg * item) {
1100 return oldServer->namePtr() == item->namePtr();
1102 bool propValue = std::any_of(origServerValue.begin(), origServerValue.end(), findByNamePtr);
1103 bool propShape = std::any_of(origServerShape.begin(), origServerShape.end(), findByNamePtr);
1105 if (newServer !=
this) {
1120 if (mustReplaceAll && !ret2) {
1123 <<
"): ERROR, proxy '" <<
p->name()
1124 <<
"' with arg '" << (ap ? ap->absArg()->GetName() :
"<could not cast>") <<
"' could not be adjusted" << endl;
1154 newServer = newSet.
find(*
this) ;
1159 TString nameAttrib(
"ORIGNAME:") ;
1174 << nameAttrib <<
" attribute" << endl ;
1180 newServer= tmp->
first();
1200 static std::set<const RooAbsArg*> callStack;
1202 std::set<const RooAbsArg*>::iterator it = callStack.lower_bound(
this);
1203 if (it != callStack.end() &&
this == *it) {
1206 callStack.insert(it,
this);
1219 cxcoutD(
LinkStateMgmt) <<
"RooAbsArg::recursiveRedirectServers(" <<
this <<
"," <<
GetName() <<
") newSet = " << newSet <<
" mustReplaceAll = "
1220 << (mustReplaceAll?
"T":
"F") <<
" nameChange = " << (nameChange?
"T":
"F") <<
" recurseInNewSet = " << (recurseInNewSet?
"T":
"F") << endl ;
1227 ret |= server->recursiveRedirectServers(newSet,mustReplaceAll,nameChange,recurseInNewSet) ;
1230 callStack.erase(
this);
1249 <<
" already registered" << endl ;
1292 << proxy.
GetName() <<
" already registered" << endl ;
1327 << proxy.
GetName() <<
" already registered" << endl ;
1336 cout <<
"RooAbsArg::registerProxy(" <<
GetName() <<
") proxy registration failure! nold=" << nProxyOld <<
" nnew=" <<
_proxyList.
GetEntries() << endl ;
1397 p->changeNormSet(nset);
1410 <<
"): Cannot be attached to a TTree" << endl ;
1474 if (
p==0) continue ;
1501 os <<
indent <<
"--- RooAbsArg ---" << endl;
1503 os <<
indent <<
" Value State: " ;
1505 case ADirty: os <<
"FORCED DIRTY" ; break ;
1506 case AClean: os <<
"FORCED clean" ; break ;
1512 os <<
indent <<
" Attributes: " ;
1516 os <<
indent <<
" Address: " << (
void*)
this << endl;
1518 os <<
indent <<
" Clients: " << endl;
1520 os <<
indent <<
" (" << (
void*)client <<
","
1528 os <<
indent <<
" Servers: " << endl;
1530 os <<
indent <<
" (" << (
void*)server <<
","
1531 << (server->_clientListValue.containsByNamePtr(
this)?
"V":
"-")
1532 << (server->_clientListShape.containsByNamePtr(
this)?
"S":
"-")
1538 os <<
indent <<
" Proxies: " << std::endl;
1541 if (!proxy) continue ;
1542 os <<
indent <<
" " << proxy->
name() <<
" -> " ;
1543 if(
auto * argProxy =
dynamic_cast<RooArgProxy*
>(proxy)) {
1544 if (
RooAbsArg* parg = argProxy->absArg()) {
1547 os <<
" (empty)" << std::endl;
1558 throw std::runtime_error(
"Unsupported proxy type.");
1596 set<string>::const_iterator iter =
_boolAttrib.begin() ;
1599 os << (
first?
" [":
",") << *iter ;
1603 if (!
first) os <<
"] " ;
1620 for(
auto const& branch : branches) {
1621 branch->redirectServers(set,
false,
false);
1670 while((branch=bIter.
next())) {
1677 case AClean: cout <<
"FORCED clean" ; break ;
1678 case ADirty: cout <<
"FORCED DIRTY" ; break ;
1700 coutI(
Optimization) <<
"RooAbsArg::optimizeCacheMode(" <<
GetName() <<
") nodes " << opt <<
" depend on observables, "
1701 <<
"changing cache operation mode from change tracking to unconditional evaluation" << endl ;
1732 auto obj = processedNodes.
findArg(
this);
1733 assert(obj !=
this);
1737 <<
" node " <<
this <<
" exists already as " << obj <<
" but with the SAME name !" << endl;
1739 processedNodes.
Add(
this);
1745 cxcoutI(
Integration) <<
"RooAbsArg::optimizeCacheMode(" <<
GetName() <<
") integral depends on value of one or more observables and will be evaluated for every event" << endl ;
1761 server->optimizeCacheMode(observables,optimizedNodes,processedNodes) ;
1777 << cacheList <<
" depend exclusively on constant parameters and will be precalculated and cached" << endl ;
1796 if (processedNodes.
findArg(
this)) {
1799 processedNodes.
Add(
this) ;
1807 while((param = iter.
next())) {
1841 if (server->isDerived()) {
1842 server->findConstantNodes(observables,cacheList,processedNodes) ;
1866 server->constOptimizeTestStatistic(opcode,doAlsoTrackingOpt) ;
1891 clientV->setOperMode(
mode) ;
1936 case Auto: os <<
" [Auto," << (
isValueDirty()?
"Dirty":
"Clean") <<
"] " ; break ;
1937 case AClean: os <<
" [ACLEAN] " ; break ;
1938 case ADirty: os <<
" [ADIRTY] " ; break ;
1952 arg->printCompactTree(os,indent2,namePat,
this) ;
1965 if (nLevel==0) return ;
1979 arg->printComponentTree(indent2.
Data(),namePat,nLevel-1) ;
1996 TString cleanName(rawBranchName) ;
2081 set<string>::const_iterator iter=
_boolAttrib.begin() ;
2085 strlcpy(buf,iter->c_str(),128) ;
2087 char* ptrToken = strtok(0,
")") ;
2108 ofstream ofs(fileName) ;
2110 coutE(
InputArguments) <<
"RooAbsArg::graphVizTree() ERROR: Cannot open graphViz output file with name " << fileName << endl ;
2127 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{";
2157 if (
auto realNode =
dynamic_cast<RooAbsReal*
>(node)) {
2158 nodeLabel += delimiter + std::to_string(realNode->getVal());
2161 os <<
"\"" << nodeName <<
"\" [ color=" << (node->
isFundamental()?
"blue":
"red")
2162 <<
", label=\"" << nodeType << delimiter << nodeLabel <<
"\"];" << endl ;
2167 set<pair<RooAbsArg*,RooAbsArg*> > links ;
2171 for(
auto const& link : links) {
2172 os <<
"\"" << link.first->GetName() <<
"\" -> \"" << link.second->GetName() <<
"\";" << endl ;
2188 linkSet.insert(make_pair(
this,server)) ;
2189 server->graphVizAddConnections(linkSet) ;
2314 RooArgSet(*this).snapshot(clonedNodes,
true);
2322 clonedNodes.
remove(*head) ;
2329 head->TNamed::SetName(newname) ;
2374 while((arg=iter.
next())) {
2376 if (tmp) suffix += tmp ;
2378 return Form(
"%s",suffix.c_str()) ;
2388 for(
auto const& arg : branches) {
2389 for (
auto const& arg2 : arg->_cacheList) {
2429 _ioReadStack.push(
this) ;
2431 _ioReadStack.pop() ;
2453 auto iter = _ioEvoList.find(
this);
2454 if (iter != _ioEvoList.end()) {
2459 for (
int i = 0; i < iter->second->GetEntriesFast(); i++) {
2463 _ioEvoList.erase(iter);
2481 for (
const auto& iter : _ioEvoList) {
2484 if (!iter.first->_proxyList.GetEntriesFast())
2485 iter.first->_proxyList.Expand(iter.second->GetEntriesFast());
2486 for (
int i = 0; i < iter.second->GetEntriesFast(); i++) {
2487 iter.first->_proxyList.Add(iter.second->At(i));
2511 auto refArray = std::make_unique<TRefArray>();
2512 refArray->Streamer(R__b) ;
2516 RooAbsArg::_ioEvoList[RooAbsArg::_ioReadStack.top()] = std::move(refArray);
2525 TObject* tmpObj ;
while ((tmpObj = iter->
Next())) {
2526 refArray.
Add(tmpObj) ;
2540 std::stringstream
s;
2542 s <<
"An instance of " << raa->
ClassName() <<
".";
2554 for(
auto * server :
servers()) {
2555 server->applyWeightSquared(flag);
2569 for(
auto * arg : normSet)
if(server.
dependsOn(*arg)) serverNormSet.
add(*arg);
istream & operator>>(istream &is, RooAbsArg &arg)
Istream operator.
ostream & operator<<(ostream &os, RooAbsArg const &arg)
Ostream operator.
static void indent(ostringstream &buf, int indent_level)
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
Option_t Option_t TPoint TPoint const char mode
Binding & operator=(OUT(*fun)(void))
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
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 and a "shape" in RooFi...
RooExpensiveObjectCache & expensiveObjectCache() const
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
Given a set of possible observables, return the observables that this PDF depends on.
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 void verboseDirty(Bool_t flag)
Activate verbose messaging related to dirty flag propagation.
void attachToStore(RooAbsDataStore &store)
Attach this argument to the data store such that it reads data from there.
const TNamed * namePtr() const
De-duplicated pointer to this object's name.
const char * aggregateCacheUniqueSuffix() const
Bool_t redirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t isRecursionStep=kFALSE)
Replace all direct servers of this object with the new servers in newServerList.
void printArgs(std::ostream &os) const override
Print object arguments, ie its proxies.
void printClassName(std::ostream &os) const override
Print object class name.
void changeServer(RooAbsArg &server, Bool_t valueProp, Bool_t shapeProp)
Change dirty flag propagation mask for specified server.
Bool_t isValueServer(const RooAbsArg &arg) const
Check if this is serving values to arg.
ProxyListCache _proxyListCache
RooWorkspace * _myws
Prevent 'AlwaysDirty' mode for this node.
~RooAbsArg() override
Destructor.
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,...
RooArgSet * _ownedComponents
void printAddress(std::ostream &os) const override
Print class name of object.
void setShapeDirty()
Notify that a shape-like property (e.g. binning) has changed.
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.
void attachArgs(const RooAbsCollection &set)
Bind this node to objects in set.
Bool_t isShapeServer(const RooAbsArg &arg) const
Check if this is serving shape to arg.
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.
void addParameters(RooAbsCollection ¶ms, const RooArgSet *nset=nullptr, bool stripDisconnected=true) const
Add all parameters of the function and its daughters to params.
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.
void Print(Option_t *options=0) const override
Print the object to the defaultPrintStream().
Bool_t inhibitDirty() const
Delete watch flag.
virtual void fillNormSetForServer(RooArgSet const &normSet, RooAbsArg const &server, RooArgSet &serverNormSet) const
Fills a RooArgSet to be used as the normalization set for a server, given a normalization set for thi...
void SetName(const char *name) override
Set the name of the TNamed.
std::set< std::string > _boolAttrib
void addServer(RooAbsArg &server, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE, std::size_t refCount=1)
Register another RooAbsArg as a server to us, ie, declare that we depend on it.
void unRegisterCache(RooAbsCache &cache)
Unregister a RooAbsCache. Called from the RooAbsCache destructor.
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
bool addOwnedComponents(const RooAbsCollection &comps)
Take ownership of the contents of 'comps'.
void printAttribList(std::ostream &os) const
Transient boolean attributes (not copied in ctor)
void printTree(std::ostream &os, TString indent="") const override
Print object tree structure.
void SetNameTitle(const char *name, const char *title) override
Set all the TNamed parameters (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...
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
void setTransientAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
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 ...
void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const override
Implement multi-line detailed printing.
Bool_t _isConstant
De-duplicated name pointer. This will be equal for all objects with the same name.
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.
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 ...
virtual Bool_t isDerived() const
Does value or shape of this arg depend on any other arg?
static Bool_t _inhibitDirty
virtual const char * cacheUniqueSuffix() const
RefCountListLegacyIterator_t * makeLegacyIterator(const RefCountList_t &list) const
const RefCountList_t & servers() const
List of all servers of this object.
Bool_t _localNoInhibitDirty
Cached isConstant status.
Int_t Compare(const TObject *other) const override
Utility function used by TCollection::Sort to compare contained TObjects We implement comparison by n...
Int_t defaultPrintContents(Option_t *opt) const override
Define default contents to print.
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)
Set the operation mode of this node.
virtual void attachToTree(TTree &t, Int_t bufSize=32000)=0
Overloadable function for derived classes to implement attachment as branch to a TTree.
OperMode _operMode
Mark batches as dirty (only meaningful for RooAbsReal).
RooLinkedList getCloningAncestors() const
Return ancestors in cloning chain of this RooAbsArg.
void setValueDirty()
Mark the element dirty. This forces a re-evaluation when a value is requested.
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
cache of the list of proxies. Avoids type casting.
void registerCache(RooAbsCache &cache)
Register RooAbsCache with this object.
virtual void optimizeCacheMode(const RooArgSet &observables)
Activate cache mode optimization with given definition of observables.
RefCountList_t _clientListShape
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...
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.
void printName(std::ostream &os) const override
Print object name.
Bool_t getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
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 calling addServer() for each arg in the list.
virtual void applyWeightSquared(bool flag)
Disables or enables the usage of squared weights.
Bool_t dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0) const
Check whether this object depends on values from an element in the serverList.
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
RefCountList_t _clientList
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
RooAbsArg & operator=(const RooAbsArg &other)
Assign all boolean and string properties of the original object.
virtual bool redirectServersHook(const RooAbsCollection &, bool, bool, bool)
Function that is called at the end of redirectServers().
RefCountList_t _serverList
RooExpensiveObjectCache * _eocache
Prohibit server redirects – Debugging tool.
RooArgSet * getComponents() const
Create a RooArgSet with all components (branch nodes) of the expression tree headed by this object.
std::set< std::string > _boolAttribTransient
RooArgSet * getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
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
Check if the "Constant" attribute is set.
void printTitle(std::ostream &os) const override
Print object title.
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.
std::size_t getParametersSizeEstimate(const RooArgSet *nset=nullptr) const
Obtain an estimate of the number of parameters of the function and its daughters.
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.
Bool_t recursiveRedirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t recurseInNewSet=kTRUE)
Recursively replace all servers with the new servers in newSet.
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
TIteratorToSTLInterface< RefCountList_t::Container_t > RefCountListLegacyIterator_t
RooAbsArg * findServer(const char *name) const
Return server of this with name name. Returns nullptr if not found.
std::vector< RooAbsCache * > _cacheList
OperMode operMode() const
Query the operation mode of this node.
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 operModeHook()
Interface for operation mode changes.
virtual void findConstantNodes(const RooArgSet &, RooArgSet &, RooLinkedList &)
Interface for constant term node finding calls.
virtual Bool_t redirectServersHook(const RooAbsCollection &, bool, bool, bool)
Interface for server redirect calls.
virtual void printCompactTreeHook(std::ostream &, const char *)
Interface for printing of cache guts in tree mode printing.
virtual void optimizeCacheMode(const RooArgSet &, RooArgSet &, RooLinkedList &)
Interface for processing of cache mode optimization calls.
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
void Print(Option_t *options=0) const override
This method must be overridden when a class wants to print itself.
Int_t getSize() const
Return the number of elements in the collection.
const char * GetName() const override
Returns name of object.
void sort(Bool_t reverse=false)
Sort collection using std::sort and name comparison.
RooFIter fwdIterator() const
One-time forward iterator.
virtual Bool_t addOwned(RooAbsArg &var, Bool_t silent=kFALSE)
Add an argument and transfer the ownership to the collection.
Storage_t::size_type size() const
RooAbsArg * first() const
void reserve(Storage_t::size_type count)
void clear()
Clear contents. If the collection is owning, it will also delete the contents.
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...
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
void setName(const char *name)
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 const char * name() const
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgProxy is the abstract interface for RooAbsArg proxy classes.
Bool_t isShapeServer() const
Returns true if contents is shape server of owner.
Bool_t isValueServer() const
Returns true of contents is value server of owner.
RooAbsArg * absArg() const
Return pointer to contained argument.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
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.
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
RooAbsArg * next()
Return next element or nullptr if at end.
Switches the message service to a different level while the instance is alive.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
RooAbsArg * findArg(const RooAbsArg *) const
Return pointer to object with given name in collection.
virtual void Add(TObject *arg)
TObject * FindObject(const char *name) const override
Return pointer to obejct with given name.
RooNameReg is a registry for const char* names.
const TNamed * constPtr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
static RooNameReg & instance()
Return reference to singleton instance.
@ kRenamedArg
TNamed flag to indicate that some RooAbsArg has been renamed (flag set in new name)
static void incrementRenameCounter()
The renaming counter has to be incremented every time a RooAbsArg is renamed.
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 variable that can be changed from the outside.
TClass * IsA() const override
void Streamer(TBuffer &) override
Stream an object of class RooRefArray.
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
Bool_t isConvolved() const
std::size_t refCount(typename Container_t::const_iterator item) const
Return ref count of item that iterator points to.
const Container_t & containedObjects() const
Direct reference to container of objects held by this list.
void Remove(const T *obj, bool force=false)
Decrease ref count of given object.
Container_t::const_iterator begin() const
Iterator over contained objects.
void Add(T *obj, std::size_t initialCount=1)
Add an object or increase refCount if it is already present.
Container_t::const_iterator end() const
End of contained objects.
bool empty() const
Check if empty.
std::size_t size() const
Number of contained objects (neglecting the ref count).
void RemoveAll(const T *obj)
Remove from list irrespective of ref count.
void reserve(std::size_t amount)
bool containsByNamePtr(const T *obj) const
Check if list contains an item using findByNamePointer().
RooTreeDataStore is a TTree-backed data storage.
RooVectorDataStore uses std::vectors to store data columns.
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
TIterator and GenericRooFIter front end with STL back end.
Iterator abstract base class.
virtual TObject * Next()=0
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
void Streamer(TBuffer &) override
Stream an object of class TObject.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
TClass * IsA() const override
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Int_t GetEntriesFast() const
virtual void Expand(Int_t newSize)
Expand or shrink the array to newSize elements.
TIterator * MakeIterator(Bool_t dir=kIterForward) const override
Returns an array iterator.
virtual void Compress()
Remove empty slots from array.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const override
TObject * Remove(TObject *obj) override
Remove object from array.
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
void Add(TObject *obj) override
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.
void Add(TObject *obj) override
void Streamer(TBuffer &) override
Stream all objects in the array to or from the I/O buffer.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Append(const char *cs)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
A TTree represents a columnar dataset.
static Roo_reg_AGKInteg1D instance
std::string getColonSeparatedNameString(RooArgSet const &argSet)
Create a string with all sorted names of RooArgSet elements separated by colons.
static constexpr double s
std::vector< RooAbsProxy * > cache