108#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3) 
  119std::map<RooAbsArg*,std::unique_ptr<TRefArray>> RooAbsArg::_ioEvoList;
 
  120std::stack<RooAbsArg*> RooAbsArg::_ioReadStack ;
 
  128     _prohibitServerRedirect(
kFALSE), _namePtr(0), _isConstant(
kFALSE), _localNoInhibitDirty(
kFALSE),
 
  142     _ownedComponents(0), _prohibitServerRedirect(
kFALSE), _namePtr(0), _isConstant(
kFALSE),
 
  143     _localNoInhibitDirty(
kFALSE), _myws(0)
 
  145  if (
name == 
nullptr || strlen(
name) == 0) {
 
  146    throw std::logic_error(
"Each RooFit object needs a name. " 
  147        "Objects representing the same entity (e.g. an observable 'x') are identified using their name.");
 
  157   : 
TNamed(other.GetName(), other.GetTitle()), 
RooPrintable(other), _boolAttrib(other._boolAttrib),
 
  158     _stringAttrib(other._stringAttrib), _deleteWatch(other._deleteWatch), _operMode(Auto), _fast(
kFALSE),
 
  159     _ownedComponents(0), _prohibitServerRedirect(
kFALSE), _namePtr(other._namePtr),
 
  160     _isConstant(other._isConstant), _localNoInhibitDirty(other._localNoInhibitDirty), _myws(0)
 
  173  Bool_t valueProp, shapeProp ;
 
  175    valueProp = server->_clientListValue.containsByNamePtr(&other);
 
  176    shapeProp = server->_clientListShape.containsByNamePtr(&other);
 
  193  RooPrintable::operator=(other);
 
  206  bool valueProp, shapeProp;
 
  208    valueProp = server->_clientListValue.containsByNamePtr(&other);
 
  209    shapeProp = server->_clientListShape.containsByNamePtr(&other);
 
  233  for (
auto client : clientListTmp) {
 
  234    client->setAttribute(
"ServerDied") ;
 
  238    client->setAttribute(attr.
Data());
 
  239    client->removeServer(*
this,
kTRUE);
 
  244   cxcoutD(Tracing) << 
"RooAbsArg::dtor(" << 
GetName() << 
"," << 
this << 
") DeleteWatch: object is being destroyed" << endl ;
 
  249             << client->GetName() << 
"\" should have been deleted first" << endl ;
 
  295  if(
string(
"Constant")==
name) {
 
  339  map<string,string>::const_iterator iter = 
_stringAttrib.find(key) ;
 
  341    return iter->second.c_str() ;
 
  392    cxcoutF(LinkStateMgmt) << 
"RooAbsArg::addServer(" << 
this << 
"," << 
GetName()
 
  393            << 
"): PROHIBITED SERVER ADDITION REQUESTED: adding server " << server.
GetName()
 
  394            << 
"(" << &server << 
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
 
  395    throw std::logic_error(
"PROHIBITED SERVER ADDITION REQUESTED in RooAbsArg::addServer");
 
  398  cxcoutD(LinkStateMgmt) << 
"RooAbsArg::addServer(" << 
this << 
"," << 
GetName() << 
"): adding server " << server.
GetName()
 
  399          << 
"(" << &server << 
") for " << (valueProp?
"value ":
"") << (shapeProp?
"shape":
"") << endl ;
 
  429  for (
const auto arg : serverList) {
 
  443    cxcoutF(LinkStateMgmt) << 
"RooAbsArg::addServer(" << 
this << 
"," << 
GetName() << 
"): PROHIBITED SERVER REMOVAL REQUESTED: removing server " 
  444            << server.
GetName() << 
"(" << &server << 
")" << endl ;
 
  449    cxcoutD(LinkStateMgmt) << 
"RooAbsArg::removeServer(" << 
GetName() << 
"): removing server " 
  450            << server.
GetName() << 
"(" << &server << 
")" << endl ;
 
  469  addServer(newServer, propValue, propShape, count);
 
  479    coutE(LinkStateMgmt) << 
"RooAbsArg::changeServer(" << 
GetName() << 
"): Server " 
  480    << server.
GetName() << 
" not registered" << endl ;
 
  486    coutE(LinkStateMgmt) << 
"RooAbsArg::changeServer(" << 
GetName() << 
"): Server " 
  487          << server.
GetName() << 
" doesn't have us registered as client" << endl ;
 
  549  if ((doBranch&&doLeaf) ||
 
  562      Bool_t isValueSrv = server->_clientListValue.containsByNamePtr(arg);
 
  563      if (valueOnly && !isValueSrv) {
 
  595    if (server->isValueServer(*
this)) {
 
  596      if (server->isFundamental()) {
 
  597        if (!nset || !server->dependsOn(*nset)) {
 
  598          nodeParamServers.
add(*server) ;
 
  601        nodeBranchServers.
add(*server) ;
 
  610  params.
add(nodeParamServers,
kTRUE) ;
 
  613  for (
const auto server : nodeBranchServers) {
 
  614    server->addParameters(params,nset) ;
 
  650         outputSet.
add(*paramSet);
 
  656   outputSet.
setName(
"parameters");
 
  717  outputSet.
setName(
"dependents");
 
  719  if (!dataList) 
return false;
 
  722  RooArgSet leafList(
"leafNodeServerList") ;
 
  726    for (
const auto arg : leafList) {
 
  727      if (arg->dependsOnValue(*dataList) && arg->isLValue()) {
 
  728        outputSet.
add(*arg) ;
 
  732    for (
const auto arg : leafList) {
 
  733      if (arg->dependsOn(*dataList) && arg->isLValue()) {
 
  734        outputSet.
add(*arg) ;
 
  749  name.Append(
"_components") ;
 
  781  while((arg=iter.
next())) {
 
  783      coutE(LinkStateMgmt) << 
"RooAbsArg::recursiveCheckObservables(" << 
GetName() << 
"): ERROR: one or more servers of node " 
  784            << arg->
GetName() << 
" no longer exists!" << endl ;
 
  804  for (
auto server : serverList) {
 
  805    if (
dependsOn(*server,ignoreArg,valueOnly)) {
 
  820  if (
this==ignoreArg) 
return kFALSE ;
 
  839    if ( !valueOnly || server->isValueServer(*
this)) {
 
  840      if (server->dependsOn(testArg,ignoreArg,valueOnly)) {
 
  908  } 
else if (source==
this) {
 
  910    coutE(LinkStateMgmt) << 
"RooAbsArg::setValueDirty(" << 
GetName()
 
  911          << 
"): cyclical dependency detected, source = " << source->
GetName() << endl ;
 
  918    cxcoutD(LinkStateMgmt) << 
"RooAbsArg::setValueDirty(" << (source?source->
GetName():
"self") << 
"->" << 
GetName() << 
"," << 
this 
  919            << 
"): dirty flag " << (
_valueDirty?
"already ":
"") << 
"raised" << endl ;
 
  926    client->setValueDirty(source) ;
 
  940    cxcoutD(LinkStateMgmt) << 
"RooAbsArg::setShapeDirty(" << 
GetName()
 
  941            << 
"): dirty flag " << (
_shapeDirty?
"already ":
"") << 
"raised" << endl ;
 
  952  } 
else if (source==
this) {
 
  954    coutE(LinkStateMgmt) << 
"RooAbsArg::setShapeDirty(" << 
GetName()
 
  955    << 
"): cyclical dependency detected" << endl ;
 
  963    client->setShapeDirty(source) ;
 
  964    client->setValueDirty(source) ;
 
 1005    for (
auto arg : newSetOrig) {
 
 1007      if (
string(
"REMOVAL_DUMMY")==arg->GetName()) {
 
 1009        if (arg->getAttribute(
"REMOVE_ALL")) {
 
 1026  std::vector<RooAbsArg*> origServerList, origServerValue, origServerShape;
 
 1028  origServerList.reserve(origSize);
 
 1029  origServerValue.reserve(origSize);
 
 1032    origServerList.push_back(oldServer) ;
 
 1035    if (oldServer->_clientListValue.containsByNamePtr(
this)) {
 
 1036      origServerValue.push_back(oldServer) ;
 
 1038    if (oldServer->_clientListShape.containsByNamePtr(
this)) {
 
 1039      origServerShape.push_back(oldServer) ;
 
 1044  for (
auto oldServer : origServerList) {
 
 1049      cxcoutD(LinkStateMgmt) << 
"RooAbsArg::redirectServers(" << (
void*)
this << 
"," << 
GetName() << 
"): server " << oldServer->
GetName()
 
 1050                  << 
" redirected from " << oldServer << 
" to " << newServer << endl ;
 
 1054      if (mustReplaceAll) {
 
 1055        coutE(LinkStateMgmt) << 
"RooAbsArg::redirectServers(" << (
void*)
this << 
"," << 
GetName() << 
"): server " << oldServer->
GetName()
 
 1056                    << 
" (" << (
void*)oldServer << 
") not redirected" << (nameChange?
"[nameChange]":
"") << endl ;
 
 1062    auto findByNamePtr = [&oldServer](
const RooAbsArg * item) {
 
 1063      return oldServer->namePtr() == item->namePtr();
 
 1065    bool propValue = std::any_of(origServerValue.begin(), origServerValue.end(), findByNamePtr);
 
 1066    bool propShape = std::any_of(origServerShape.begin(), origServerShape.end(), findByNamePtr);
 
 1068    if (newServer != 
this) {
 
 1083    if (mustReplaceAll && !ret2) {
 
 1085      coutE(LinkStateMgmt) << 
"RooAbsArg::redirectServers(" << 
GetName()
 
 1086              << 
"): ERROR, proxy '" << p->
name()
 
 1087              << 
"' with arg '" << (ap ? ap->absArg()->GetName() : 
"<could not cast>") << 
"' could not be adjusted" << endl;
 
 1116    newServer = newSet.
find(*
this) ;
 
 1121    TString nameAttrib(
"ORIGNAME:") ;
 
 1135        coutF(LinkStateMgmt) << 
"RooAbsArg::redirectServers(" << 
GetName() << 
"): FATAL Error, " << tmp->
getSize() << 
" servers with " 
 1136            << nameAttrib << 
" attribute" << endl ;
 
 1142      newServer= tmp->
first();
 
 1160  static std::set<const RooAbsArg*> callStack;
 
 1162    std::set<const RooAbsArg*>::iterator it = callStack.lower_bound(
this);
 
 1163    if (it != callStack.end() && 
this == *it) {
 
 1166      callStack.insert(it, 
this);
 
 1179  cxcoutD(LinkStateMgmt) << 
"RooAbsArg::recursiveRedirectServers(" << 
this << 
"," << 
GetName() << 
") newSet = " << newSet << 
" mustReplaceAll = " 
 1180          << (mustReplaceAll?
"T":
"F") << 
" nameChange = " << (nameChange?
"T":
"F") << 
" recurseInNewSet = " << (recurseInNewSet?
"T":
"F") << endl ;
 
 1187    ret |= server->recursiveRedirectServers(newSet,mustReplaceAll,nameChange,recurseInNewSet) ;
 
 1190  callStack.erase(
this);
 
 1207    coutE(LinkStateMgmt) << 
"RooAbsArg::registerProxy(" << 
GetName() << 
"): proxy named " 
 1209          << 
" already registered" << endl ;
 
 1249    coutE(LinkStateMgmt) << 
"RooAbsArg::registerProxy(" << 
GetName() << 
"): proxy named " 
 1250          << proxy.
GetName() << 
" already registered" << endl ;
 
 1282    coutE(LinkStateMgmt) << 
"RooAbsArg::registerProxy(" << 
GetName() << 
"): proxy named " 
 1283          << proxy.
GetName() << 
" already registered" << endl ;
 
 1291    cout << 
"RooAbsArg::registerProxy(" << 
GetName() << 
") proxy registration failure! nold=" << nProxyOld << 
" nnew=" << 
_proxyList.
GetEntries() << endl ;
 
 1353  coutE(Contents) << 
"RooAbsArg::attachToTree(" << 
GetName()
 
 1354        << 
"): Cannot be attached to a TTree" << endl ;
 
 1395  os << IsA()->GetName() ;
 
 1418    if (p==0) continue ;
 
 1445  os << 
indent << 
"--- RooAbsArg ---" << endl;
 
 1447  os << 
indent << 
"  Value State: " ;
 
 1449  case ADirty: os << 
"FORCED DIRTY" ; break ;
 
 1450  case AClean: os << 
"FORCED clean" ; break ;
 
 1456  os << 
indent << 
"  Attributes: " ;
 
 1460  os << 
indent << 
"  Address: " << (
void*)
this << endl;
 
 1462  os << 
indent << 
"  Clients: " << endl;
 
 1464    os << 
indent << 
"    (" << (
void*)client  << 
"," 
 1472  os << 
indent << 
"  Servers: " << endl;
 
 1474    os << 
indent << 
"    (" << (
void*)server << 
"," 
 1475       << (server->_clientListValue.containsByNamePtr(
this)?
"V":
"-")
 
 1476       << (server->_clientListShape.containsByNamePtr(
this)?
"S":
"-")
 
 1482  os << 
indent << 
"  Proxies: " << endl ;
 
 1485    if (!proxy) continue ;
 
 1486    if (proxy->IsA()->InheritsFrom(RooArgProxy::Class())) {
 
 1487      os << 
indent << 
"    " << proxy->
name() << 
" -> " ;
 
 1492   os << 
" (empty)" << endl ; ;
 
 1495      os << 
indent << 
"    " << proxy->
name() << 
" -> " ;
 
 1537  set<string>::const_iterator iter = 
_boolAttrib.begin() ;
 
 1540    os << (
first?
" [":
",") << *iter ;
 
 1544  if (!
first) os << 
"] " ;
 
 1559  while((branch=iter.
next())) {
 
 1578  while((branch=iter.
next())) {
 
 1609    while((branch=bIter.
next())) {
 
 1616    case AClean: cout << 
"FORCED clean" ; break ;
 
 1617    case ADirty: cout << 
"FORCED DIRTY" ; break ;
 
 1639  coutI(Optimization) << 
"RooAbsArg::optimizeCacheMode(" << 
GetName() << 
") nodes " << opt << 
" depend on observables, " 
 1640         << 
"changing cache operation mode from change tracking to unconditional evaluation" << endl ;
 
 1671  auto obj = processedNodes.
findArg(
this);
 
 1672  assert(obj != 
this); 
 
 1675     cxcoutI(Optimization) << 
"RooAbsArg::optimizeCacheMode(" << 
GetName()
 
 1676                           << 
" node " << 
this << 
" exists already as " << obj << 
" but with the SAME name !" << endl;
 
 1678  processedNodes.
Add(
this);
 
 1684      cxcoutI(Integration) << 
"RooAbsArg::optimizeCacheMode(" << 
GetName() << 
") integral depends on value of one or more observables and will be evaluated for every event" << endl ;
 
 1700    server->optimizeCacheMode(observables,optimizedNodes,processedNodes) ;
 
 1715  coutI(Optimization) << 
"RooAbsArg::findConstantNodes(" << 
GetName() << 
"): components " 
 1716         << cacheList << 
" depend exclusively on constant parameters and will be precalculated and cached" << endl ;
 
 1735  if (processedNodes.
findArg(
this)) {
 
 1738    processedNodes.
Add(
this) ;
 
 1746  while((param = iter.
next())) {
 
 1769      cxcoutD(Optimization) << 
"RooAbsArg::findConstantNodes(" << 
GetName() << 
") adding self to list of constant nodes" << endl ;
 
 1780      if (server->isDerived()) {
 
 1781        server->findConstantNodes(observables,cacheList,processedNodes) ;
 
 1805    server->constOptimizeTestStatistic(opcode,doAlsoTrackingOpt) ;
 
 1828  if (mode==
ADirty && recurseADirty) {
 
 1830      clientV->setOperMode(mode) ;
 
 1845    ofstream ofs(filename) ;
 
 1870    os << IsA()->GetName() << 
"::" << 
GetName() <<  
" = " ;
 
 1875      case Auto:   os << 
" [Auto," << (
isValueDirty()?
"Dirty":
"Clean") << 
"] "  ; break ;
 
 1876      case AClean: os << 
" [ACLEAN] " ; break ;
 
 1877      case ADirty: os << 
" [ADIRTY] " ; break ;
 
 1891    arg->printCompactTree(os,indent2,namePat,
this) ;
 
 1904  if (nLevel==0) return ;
 
 1918    arg->printComponentTree(indent2.
Data(),namePat,nLevel-1) ;
 
 1935  TString cleanName(rawBranchName) ;
 
 2020  set<string>::const_iterator iter= 
_boolAttrib.begin() ;
 
 2024      strlcpy(buf,iter->c_str(),128) ;
 
 2026      char* ptrToken = strtok(0,
")") ;
 
 2045  ofstream ofs(fileName) ;
 
 2047    coutE(InputArguments) << 
"RooAbsArg::graphVizTree() ERROR: Cannot open graphViz output file with name " << fileName << endl ;
 
 2062    coutE(InputArguments) << 
"RooAbsArg::graphVizTree() ERROR: output stream provided as input argument is in invalid state" << endl ;
 
 2069  os << 
"digraph \"" << 
GetName() << 
"\"{" << endl ;
 
 2078  while((node=iter.
next())) {
 
 2079    string nodeName = node->
GetName();
 
 2080    string nodeTitle = node->
GetTitle();
 
 2081    string nodeLabel = (useTitle && !nodeTitle.empty()) ? nodeTitle : nodeName;
 
 2084    string::size_type position = nodeLabel.find(
"#") ;
 
 2085    while(useLatex && position!=nodeLabel.npos){
 
 2086      nodeLabel.replace(position, 1, 
"\\");
 
 2089    string typeFormat = 
"\\texttt{";
 
 2090    string nodeType = (useLatex) ? typeFormat+node->IsA()->
GetName()+
"}" : node->IsA()->
GetName();
 
 2092    os << 
"\"" << nodeName << 
"\" [ color=" << (node->
isFundamental()?
"blue":
"red")
 
 2093       << 
", label=\"" << nodeType << delimiter << nodeLabel << 
"\"];" << endl ;
 
 2098  set<pair<RooAbsArg*,RooAbsArg*> > links ;
 
 2102  for(
auto const& link : links) {
 
 2103    os << 
"\"" << link.first->GetName() << 
"\" -> \"" << link.second->GetName() << 
"\";" << endl ;
 
 2119    linkSet.insert(make_pair(
this,server)) ;
 
 2120    server->graphVizAddConnections(linkSet) ;
 
 2231  clonedNodes->
remove(*head) ;
 
 2238  delete clonedNodes ;
 
 2242    head->TNamed::SetName(newname) ;
 
 2287  while((arg=iter.
next())) {
 
 2289    if (tmp) suffix += tmp ;
 
 2291  return Form(
"%s",suffix.c_str()) ;
 
 2303  while((arg=iter.
next())) {
 
 2305    for (deque<RooAbsCache*>::iterator iter2 = arg->
_cacheList.begin() ; iter2 != arg->
_cacheList.end() ; ++iter2) {
 
 2306      (*iter2)->wireCache() ;
 
 2349     _ioReadStack.push(
this) ;
 
 2351     _ioReadStack.pop() ;
 
 2373  auto iter = _ioEvoList.find(
this);
 
 2374  if (iter != _ioEvoList.end()) {
 
 2379    for (
int i = 0; i < iter->second->GetEntriesFast(); i++) {
 
 2383    _ioEvoList.erase(iter);
 
 2401  for (
const auto& iter : _ioEvoList) {
 
 2404    if (!iter.first->_proxyList.GetEntriesFast())
 
 2405       iter.first->_proxyList.Expand(iter.second->GetEntriesFast());
 
 2406    for (
int i = 0; i < iter.second->GetEntriesFast(); i++) {
 
 2407       iter.first->_proxyList.Add(iter.second->At(i));
 
 2423void RooRefArray::Streamer(
TBuffer &R__b)
 
 2431      auto refArray = std::make_unique<TRefArray>();
 
 2432      refArray->Streamer(R__b) ;
 
 2436      RooAbsArg::_ioEvoList[RooAbsArg::_ioReadStack.top()] = std::move(refArray);
 
 2445     TObject* tmpObj ; 
while ((tmpObj = iter->
Next())) {
 
 2446       refArray.Add(tmpObj) ;
 
 2450     refArray.Streamer(R__b) ;
 
 2460   std::stringstream s;
 
 2462      s << 
"An instance of " << raa->
ClassName() << 
".";
 
istream & operator>>(istream &is, RooAbsArg &arg)
Istream operator.
 
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
 
static void indent(ostringstream &buf, int indent_level)
 
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 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.
 
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)
Replace all direct servers of this object with the new servers in newServerList.
 
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.
 
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
 
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.
 
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.
 
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.
 
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.
 
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
Is this object a fundamental type that can be added to a dataset? Fundamental-type subclasses overrid...
 
virtual void printTitle(std::ostream &os) const
Print object title.
 
RefCountList_t _clientListValue
 
void printAttribList(std::ostream &os) const
Transient boolean attributes (not copied in ctor)
 
virtual void Print(Option_t *options=0) const
Print the object to the defaultPrintStream().
 
friend void RooRefArray::Streamer(TBuffer &)
 
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
 
virtual void printAddress(std::ostream &os) const
Print class name of object.
 
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 ...
 
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()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
 
virtual ~RooAbsArg()
Destructor.
 
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
 
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)
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 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.
 
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...
 
void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
 
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.
 
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 calling addServer() for each arg in the list.
 
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 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.
 
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,...
 
virtual void printArgs(std::ostream &os) const
Print object arguments, ie its proxies.
 
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.
 
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
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 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.
 
void sort(Bool_t reverse=false)
Sort collection using std::sort and name comparison.
 
RooFIter fwdIterator() const
One-time forward iterator.
 
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
 
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.
 
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.
 
void setName(const char *name)
 
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 abstract 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.
 
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
 
Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE) override
Add element to non-owning set.
 
Bool_t addOwned(RooAbsArg &var, Bool_t silent=kFALSE) override
Add element to an owning set.
 
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 ...
 
TObject * FindObject(const char *name) const
Return pointer to obejct with given name.
 
RooAbsArg * findArg(const RooAbsArg *) const
Return pointer to object with given name in collection.
 
virtual void Add(TObject *arg)
 
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 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.
 
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().
 
RooSetProxy is the concrete proxy for RooArgSet objects.
 
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 SetName(const char *name)
Set the name of the TNamed.
 
virtual const char * GetTitle() const
Returns title of object.
 
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
 
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.
 
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.