ROOT logo
ROOT » ROOFIT » ROOFITCORE » RooAbsArg

class RooAbsArg: public TNamed, public RooPrintable



RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) and "shape" that in general depends on (is a client of) other RooAbsArg subclasses. The only state information about a value that is maintained in this base class consists of named attributes and flags that track when either the value or the shape of this object changes. The meaning of shape depends on the client implementation but could be, for example, the allowed range of a value. The base class is also responsible for managing client/server links and propagating value/shape changes through an expression tree. RooAbsArg implements public interfaces for inspecting client/server relationships and setting/clearing/testing named attributes.

Function Members (Methods)

 
    This is an abstract class, constructors will not be documented.
    Look at the header to check for available constructors.

public:
virtual~RooAbsArg()
voidTObject::AbstractMethod(const char* method) const
Bool_taddOwnedComponents(const RooArgSet& comps)
voidaddParameters(RooArgSet& params, const RooArgSet* nset = 0, Bool_t stripDisconnected = kTRUE) const
voidaddServer(RooAbsArg& server, Bool_t valueProp = kTRUE, Bool_t shapeProp = kFALSE)
voidaddServerList(RooAbsCollection& serverList, Bool_t valueProp = kTRUE, Bool_t shapeProp = kFALSE)
const char*aggregateCacheUniqueSuffix() const
virtual voidTObject::AppendPad(Option_t* option = "")
voidattachDataSet(const RooAbsData& set)
voidattachDataStore(const RooAbsDataStore& set)
const set<std::string>&attributes() const
voidbranchNodeServerList(RooAbsCollection* list, const RooAbsArg* arg = 0, Bool_t recurseNonDerived = kFALSE) const
virtual voidTObject::Browse(TBrowser* b)
virtual const char*cacheUniqueSuffix() const
voidchangeServer(RooAbsArg& server, Bool_t valueProp, Bool_t shapeProp)
Bool_tcheckDependents(const RooArgSet* nset) const
virtual Bool_tcheckObservables(const RooArgSet* nset) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
voidclearShapeDirty() const
voidclearValueDirty() const
TIterator*clientIterator() const
virtual TObject*clone(const char* newname) const
virtual TObject*Clone(const char* newname = 0) const
virtual RooAbsArg*cloneTree(const char* newname = 0) const
virtual Int_tCompare(const TObject* other) const
virtual voidconstOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode)
virtual voidTNamed::Copy(TObject& named) const
static voidcopyList(TList& dest, const TList& source)
static UInt_tcrc32(const char* data)
virtual RooAbsArg*createFundamental(const char* newname = 0) const
virtual Int_tdefaultPrintContents(Option_t* opt) const
static ostream&RooPrintable::defaultPrintStream(ostream* os = 0)
virtual RooPrintable::StyleOptionRooPrintable::defaultPrintStyle(Option_t* opt) const
virtual voidTObject::Delete(Option_t* option = "")MENU
Bool_tdependentOverlaps(const RooAbsData* dset, const RooAbsArg& testArg) const
Bool_tdependentOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const
Bool_tdependsOn(const RooAbsCollection& serverList, const RooAbsArg* ignoreArg = 0, Bool_t valueOnly = kFALSE) const
Bool_tdependsOn(const RooAbsArg& server, const RooAbsArg* ignoreArg = 0, Bool_t valueOnly = kFALSE) const
Bool_tdependsOnValue(const RooAbsCollection& serverList, const RooAbsArg* ignoreArg = 0) const
Bool_tdependsOnValue(const RooAbsArg& server, const RooAbsArg* ignoreArg = 0) const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
RooExpensiveObjectCache&expensiveObjectCache() const
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
Bool_tfindConstantNodes(const RooArgSet& observables, RooArgSet& cacheList)
Bool_tfindConstantNodes(const RooArgSet& observables, RooArgSet& cacheList, RooLinkedList& processedNodes)
RooAbsArg*findNewServer(const RooAbsCollection& newSet, Bool_t nameChange) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
RooAbsArg*findServer(const char* name) const
RooAbsArg*findServer(const RooAbsArg& arg) const
RooAbsArg*findServer(Int_t index) const
Bool_tgetAttribute(const Text_t* name) const
RooAbsCache*getCache(Int_t index) const
RooLinkedListgetCloningAncestors() const
RooArgSet*getComponents() const
RooArgSet*getDependents(const RooArgSet& set) const
RooArgSet*getDependents(const RooAbsData* set) const
RooArgSet*getDependents(const RooArgSet* depList) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
RooArgSet*getObservables(const RooAbsData* data) const
RooArgSet*getObservables(const RooAbsData& data) const
RooArgSet*getObservables(const RooArgSet& set, Bool_t valueOnly = kTRUE) const
RooArgSet*getObservables(const RooArgSet* depList, Bool_t valueOnly = kTRUE) const
virtual Option_t*TObject::GetOption() const
RooArgSet*getParameters(const RooAbsData* data, Bool_t stripDisconnected = kTRUE) const
RooArgSet*getParameters(const RooAbsData& data, Bool_t stripDisconnected = kTRUE) const
RooArgSet*getParameters(const RooArgSet& set, Bool_t stripDisconnected = kTRUE) const
virtual RooArgSet*getParameters(const RooArgSet* depList, Bool_t stripDisconnected = kTRUE) const
const Text_t*getStringAttribute(const Text_t* key) const
virtual const char*TNamed::GetTitle() const
Bool_tgetTransientAttribute(const Text_t* name) const
virtual UInt_tTObject::GetUniqueID() const
RooArgSet*getVariables(Bool_t stripDisconnected = kTRUE) const
voidgraphVizTree(const char* fileName, const char* delimiter = "\n", bool useTitle = false, bool useLatex = false)
voidgraphVizTree(ostream& os, const char* delimiter = "\n", bool useTitle = false, bool useLatex = false)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
Bool_thasClients() const
virtual ULong_tTNamed::Hash() const
virtual Bool_thasRange(const char*) const
virtual Bool_timportWorkspaceHook(RooWorkspace&)
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual Bool_tinRange(const char*) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tisCloneOf(const RooAbsArg& other) const
Bool_tisConstant() const
virtual Bool_tisDerived() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
virtual Bool_tisFundamental() const
virtual Bool_tisLValue() const
Bool_tTObject::IsOnHeap() const
Bool_tisShapeDirty() const
Bool_tisShapeServer(const RooAbsArg& arg) const
Bool_tisShapeServer(const char* name) const
virtual Bool_tIsSortable() const
Bool_tisValueDirty() const
Bool_tisValueServer(const RooAbsArg& arg) const
Bool_tisValueServer(const char* name) const
Bool_tTObject::IsZombie() const
voidleafNodeServerList(RooAbsCollection* list, const RooAbsArg* arg = 0, Bool_t recurseNonDerived = kFALSE) const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
static voidRooPrintable::nameFieldLength(Int_t newLen)
virtual Bool_tTObject::Notify()
Int_tnumCaches() const
Bool_tobservableOverlaps(const RooAbsData* dset, const RooAbsArg& testArg) const
Bool_tobservableOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TNamed&TNamed::operator=(const TNamed& rhs)
virtual Bool_toperator==(const RooAbsArg& other)
RooAbsArg::OperModeoperMode() const
virtual voidoptimizeCacheMode(const RooArgSet& observables)
virtual voidoptimizeCacheMode(const RooArgSet& observables, RooArgSet& optNodes, RooLinkedList& processedNodes)
Bool_toverlaps(const RooAbsArg& testArg, Bool_t valueOnly = kFALSE) const
const RooArgSet*ownedComponents() const
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* options = 0) const
virtual voidprintAddress(ostream& os) const
virtual voidprintArgs(ostream& os) const
virtual voidprintClassName(ostream& os) const
voidprintCompactTree(const char* indent = "", const char* fileName = 0, const char* namePat = 0, RooAbsArg* client = 0)
voidprintCompactTree(ostream& os, const char* indent = "", const char* namePat = 0, RooAbsArg* client = 0)
virtual voidprintCompactTreeHook(ostream& os, const char* ind = "")
voidprintComponentTree(const char* indent = "", const char* namePat = 0, Int_t nLevel = 999)
voidprintDirty(Bool_t depth = kTRUE) const
virtual voidRooPrintable::printExtras(ostream& os) const
virtual voidprintMetaArgs(ostream&) const
virtual voidprintMultiline(ostream& os, Int_t contents, Bool_t verbose = kFALSE, TString indent = "") const
virtual voidprintName(ostream& os) const
virtual voidRooPrintable::printStream(ostream& os, Int_t contents, RooPrintable::StyleOption style, TString indent = "") const
virtual voidprintTitle(ostream& os) const
virtual voidprintTree(ostream& os, TString indent = "") const
virtual voidRooPrintable::printValue(ostream& os) const
virtual Int_tTObject::Read(const char* name)
virtual Bool_treadFromStream(istream& is, Bool_t compact, Bool_t verbose = kFALSE)
Bool_trecursiveCheckDependents(const RooArgSet* nset) const
Bool_trecursiveCheckObservables(const RooArgSet* nset) const
Bool_trecursiveRedirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll = kFALSE, Bool_t nameChange = kFALSE, Bool_t recurseInNewSet = kTRUE)
virtual voidTObject::RecursiveRemove(TObject* obj)
Bool_tredirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll = kFALSE, Bool_t nameChange = kFALSE, Bool_t isRecursionStep = kFALSE)
virtual Bool_tredirectServersHook(const RooAbsCollection&, Bool_t, Bool_t, Bool_t)
voidregisterCache(RooAbsCache& cache)
voidremoveServer(RooAbsArg& server, Bool_t force = kFALSE)
voidreplaceServer(RooAbsArg& oldServer, RooAbsArg& newServer, Bool_t valueProp, Bool_t shapeProp)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
TIterator*serverIterator() const
virtual voidserverNameChangeHook(const RooAbsArg*, const RooAbsArg*)
static voidsetACleanADirty(Bool_t flag)
voidsetAttribute(const Text_t* name, Bool_t value = kTRUE)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
static voidsetDirtyInhibit(Bool_t flag)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetExpensiveObjectCache(RooExpensiveObjectCache& cache)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidsetOperMode(RooAbsArg::OperMode mode, Bool_t recurseADirty = kTRUE)
voidsetProhibitServerRedirect(Bool_t flag)
voidsetShapeDirty() const
voidsetStringAttribute(const Text_t* key, const Text_t* value)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTransientAttribute(const Text_t* name, Bool_t value = kTRUE)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetValueDirty() const
TIterator*shapeClientIterator() const
virtual voidShowMembers(TMemberInspector& insp)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
const map<std::string,std::string>&stringAttributes() const
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
const set<std::string>&transientAttributes() const
voidtreeNodeServerList(RooAbsCollection* list, const RooAbsArg* arg = 0, Bool_t doBranch = kTRUE, Bool_t doLeaf = kTRUE, Bool_t valueOnly = kFALSE, Bool_t recurseNonDerived = kFALSE) const
voidunRegisterCache(RooAbsCache& cache)
virtual voidTObject::UseCurrentStyle()
TIterator*valueClientIterator() const
static voidverboseDirty(Bool_t flag)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
virtual voidwriteToStream(ostream& os, Bool_t compact) const
protected:
virtual voidattachToTree(TTree& t, Int_t bufSize = 32000)
TStringcleanBranchName() const
virtual voidcopyCache(const RooAbsArg* source, Bool_t valueOnly = kFALSE)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidfillTreeBranch(TTree& t)
static Bool_tflipAClean()
virtual voidgetObservablesHook(const RooArgSet*, RooArgSet*) const
virtual voidgetParametersHook(const RooArgSet*, RooArgSet*, Bool_t) const
RooAbsProxy*getProxy(Int_t index) const
voidgraphVizAddConnections(set<std::pair<RooAbsArg*,RooAbsArg*> >&)
static Bool_tinhibitDirty()
virtual Bool_tisValid() const
voidTObject::MakeZombie()
Int_tnumProxies() const
virtual voidoperModeHook()
virtual voidoptimizeDirtyHook(const RooArgSet*)
voidprintAttribList(ostream& os) const
voidregisterProxy(RooArgProxy& proxy)
voidregisterProxy(RooSetProxy& proxy)
voidregisterProxy(RooListProxy& proxy)
voidsetProxyNormSet(const RooArgSet* nset)
voidsetShapeDirty(const RooAbsArg* source) const
virtual voidsetTreeBranchStatus(TTree& t, Bool_t active)
voidsetValueDirty(const RooAbsArg* source) const
virtual voidsyncCache(const RooArgSet* nset = 0)
voidunRegisterProxy(RooArgProxy& proxy)
voidunRegisterProxy(RooSetProxy& proxy)
voidunRegisterProxy(RooListProxy& proxy)

Data Members

public:
enum ConstOpCode { Activate
DeActivate
ConfigChange
ValueChange
};
enum OperMode { Auto
AClean
ADirty
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
enum RooPrintable::ContentsOption { kName
kClassName
kValue
kArgs
kExtras
kAddress
kTitle
kCollectionHeader
};
enum RooPrintable::StyleOption { kInline
kSingleLine
kStandard
kVerbose
kTreeStructure
};
protected:
set<std::string>_boolAttribBoolean attributes
set<std::string>_boolAttribTransient! Transient boolean attributes (not copied in ctor)
deque<RooAbsCache*>_cacheListlist of caches
RooRefCountList_clientListlist of client objects
RooRefCountList_clientListShapesubset of clients that requested shape dirty flag propagation
RooRefCountList_clientListValuesubset of clients that requested value dirty flag propagation
TIterator*_clientShapeIter! Iterator over _clientListShape
TIterator*_clientValueIter! Iterator over _clientListValue
Bool_t_deleteWatch! Delete watch flag
RooExpensiveObjectCache*_eocachePointer to global cache manager for any expensive components created by this object
static Bool_t_flipACleanStatic flag controlling flipping status of all AClean nodes to ADirty ;
static Bool_t_inhibitDirtyStatic flag controlling global inhibit of dirty state propagation
static Int_tRooPrintable::_nameLength
RooAbsArg::OperMode_operModeDirty state propagation mode
RooArgSet*_ownedComponents! Set of owned component
Bool_t_prohibitServerRedirect! Prohibit server redirects -- Debugging tool
TList_proxyListlist of proxies
RooRefCountList_serverListlist of server objects
Bool_t_shapeDirtyFlag set if value needs recalculating because input shapes modified
map<std::string,std::string>_stringAttribString attributes
Bool_t_valueDirtyFlag set if value needs recalculating because input values modified
static Bool_t_verboseDirtyStatic flag controlling verbose messaging for dirty state changes
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

~RooAbsArg()
 Destructor.
void setDirtyInhibit(Bool_t flag)
 Control global dirty inhibit mode. When set to true no value or shape dirty
 flags are propagated and cache is always considered to be dirty.
void setACleanADirty(Bool_t flag)
 This global switch changes the cache mode of all objects marked as 'always clean'
 to 'always dirty'. For internal use in RooRealIntegral
void verboseDirty(Bool_t flag)
 Activate verbose messaging related to dirty flag propagation
Bool_t isCloneOf(const RooAbsArg& other) const
 Check if this object was created as a clone of 'other'
void setAttribute(const Text_t* name, Bool_t value = kTRUE)
 Set (default) or clear a named boolean attribute of this object.
Bool_t getAttribute(const Text_t* name) const
 Check if a named attribute is set. By default, all attributes are unset.
void setStringAttribute(const Text_t* key, const Text_t* value)
 Associate string 'value' to this object under key 'key'
const Text_t* getStringAttribute(const Text_t* key) const
 Get string attribute mapped under key 'key'. Returns null pointer
 if no attribute exists under that key
void setTransientAttribute(const Text_t* name, Bool_t value = kTRUE)
 Set (default) or clear a named boolean attribute of this object.
Bool_t getTransientAttribute(const Text_t* name) const
 Check if a named attribute is set. By default, all attributes
 are unset.
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. In addition to the basic client-server relationship,
 we can declare dependence on the server's value and/or shape.
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
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 shape.
void replaceServer(RooAbsArg& oldServer, RooAbsArg& newServer, Bool_t valueProp, Bool_t shapeProp)
 Replace 'oldServer' with 'newServer'
void changeServer(RooAbsArg& server, Bool_t valueProp, Bool_t shapeProp)
 Change dirty flag propagation mask for specified server
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. A leaf node is node that has no servers declared.
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. A branch node is node that has one or more servers declared.
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 top node.
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 the names of the variable list
 of the supplied data set (the dependents). The caller of this
 function is responsible for deleting the returned argset.
 The complement of this function is getObservables()
void addParameters(RooArgSet& params, const RooArgSet* nset = 0, Bool_t stripDisconnected = kTRUE) const
 INTERNAL helper function for getParameters()
RooArgSet* getParameters(const RooArgSet* depList, 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 the names the args in the
 supplied argset. The caller of this function is responsible
 for deleting the returned argset. The complement of this function
 is getObservables()
RooArgSet* getObservables(const RooAbsData* data) const
 Create a list of leaf nodes in the arg tree starting with
 ourself as top node that match any of the names of the variable list
 of the supplied data set (the dependents). The caller of this
 function is responsible for deleting the returned argset.
 The complement of this function is getObservables()
RooArgSet* getObservables(const RooArgSet* depList, Bool_t valueOnly = kTRUE) const
 Create a list of leaf nodes in the arg tree starting with
 ourself as top node that match any of the names the args in the
 supplied argset. The caller of this function is responsible
 for deleting the returned argset. The complement of this function
 is getObservables()
RooArgSet* getComponents() const
 Return a RooArgSet with all component (branch nodes) of the
 expression tree headed by this object
Bool_t checkObservables(const RooArgSet* nset) const
 Overloadable function in which derived classes can implement
 consistency checks of the variables. If this function returns
 true, indicating an error, the fitter or generator will abort.
Bool_t recursiveCheckObservables(const RooArgSet* nset) const
 Recursively call checkObservables on all nodes in the expression tree
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. Uses the dependsOn(RooAbsArg&) member function.
Bool_t dependsOn(const RooAbsArg& server, const RooAbsArg* ignoreArg = 0, Bool_t valueOnly = kFALSE) const
 Test whether we depend on (ie, are served by) the specified object.
 Note that RooAbsArg objects are considered equivalent if they have
 the same name.
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
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 of the testArg.
Bool_t observableOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const
 Test if any of the dependents of the arg tree (as determined by getObservables)
 overlaps with those of the testArg.
void setValueDirty(const RooAbsArg* source) const
 Mark this object as having changed its value, and propagate this status
 change to all of our clients. If the object is not in automatic dirty
 state propagation mode, this call has no effect
void setShapeDirty(const RooAbsArg* source) const
 Mark this object as having changed its shape, and propagate this status
 change to all of our clients.
Bool_t redirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll = kFALSE, Bool_t nameChange = kFALSE, Bool_t isRecursionStep = kFALSE)
 Substitute our servers with those listed in newSet. If nameChange is false, servers and
 and substitutes are matched by name. If nameChange is true, servers are matched to args
 in newSet that have the 'ORIGNAME:<servername>' attribute set. If mustReplaceAll is set,
 a warning is printed and error status is returned if not all servers could be sucessfully
 substituted.
RooAbsArg * findNewServer(const RooAbsCollection& newSet, Bool_t nameChange) const
 Find the new server in the specified set that matches the old server.
 Allow a name change if nameChange is kTRUE, in which case the new
 server is selected by searching for a new server with an attribute
 of "ORIGNAME:<oldName>". Return zero if there is not a unique match.
Bool_t recursiveRedirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll = kFALSE, Bool_t nameChange = kFALSE, Bool_t recurseInNewSet = kTRUE)
 Recursively redirect all servers with new server in collection 'newSet'.
 Substitute our servers with those listed in newSet. If nameChange is false, servers and
 and substitutes are matched by name. If nameChange is true, servers are matched to args
 in newSet that have the 'ORIGNAME:<servername>' attribute set. If mustReplaceAll is set,
 a warning is printed and error status is returned if not all servers could be sucessfully
 substituted. If recurseInNewSet is true, the recursion algorithm also recursion into
 expression trees under the arguments in the new servers (i.e. those in newset)
void registerProxy(RooArgProxy& proxy)
 Register an RooArgProxy in the proxy list. This function is called by owned
 proxies upon creation. After registration, this arg wil forward pointer
 changes from serverRedirects and updates in cached normalization sets
 to the proxies immediately after they occur. The proxied argument is
 also added as value and/or shape server
void unRegisterProxy(RooArgProxy& proxy)
 Remove proxy from proxy list. This functions is called by owned proxies
 upon their destruction.
void registerProxy(RooSetProxy& proxy)
 Register an RooSetProxy in the proxy list. This function is called by owned
 proxies upon creation. After registration, this arg wil forward pointer
 changes from serverRedirects and updates in cached normalization sets
 to the proxies immediately after they occur.
void unRegisterProxy(RooSetProxy& proxy)
 Remove proxy from proxy list. This functions is called by owned proxies
 upon their destruction.
void registerProxy(RooListProxy& proxy)
 Register an RooListProxy in the proxy list. This function is called by owned
 proxies upon creation. After registration, this arg wil forward pointer
 changes from serverRedirects and updates in cached normalization sets
 to the proxies immediately after they occur.
void unRegisterProxy(RooListProxy& proxy)
 Remove proxy from proxy list. This functions is called by owned proxies
 upon their destruction.
RooAbsProxy* getProxy(Int_t index) const
 Return the nth proxy from the proxy list.
Int_t numProxies() const
 Return the number of registered proxies.
void setProxyNormSet(const RooArgSet* nset)
 Forward a change in the cached normalization argset
 to all the registered proxies.
void attachToTree(TTree& t, Int_t bufSize = 32000)
 Overloadable function for derived classes to implement
 attachment as branch to a TTree
Bool_t isValid() const
 WVE (08/21/01) Probably obsolete now
void copyList(TList& dest, const TList& source)
 WVE (08/21/01) Probably obsolete now
void printName(ostream& os) const
 Print object name
void printTitle(ostream& os) const
 Print object title
void printClassName(ostream& os) const
 Print object class name
void printAddress(ostream& os) const
 Print addrss of this RooAbsArg
void printArgs(ostream& os) const
 Print object arguments, ie its proxies
Int_t defaultPrintContents(Option_t* opt) const
 Define default contents to print
void printMultiline(ostream& os, Int_t contents, Bool_t verbose = kFALSE, TString indent = "") const
 Implement multi-line detailed printing
void printTree(ostream& os, TString indent = "") const
 Print object tree structure
void printAttribList(ostream& os) const
 Print the attribute list
void attachDataSet(const RooAbsData& set)
 Replace server nodes with names matching the dataset variable names
 with those data set variables, making this PDF directly dependent on the dataset
void attachDataStore(const RooAbsDataStore& set)
 Replace server nodes with names matching the dataset variable names
 with those data set variables, making this PDF directly dependent on the dataset
Int_t Compare(const TObject* other) const
 Utility function used by TCollection::Sort to compare contained TObjects
 We implement comparison by name, resulting in alphabetical sorting by object name.
void printDirty(Bool_t depth = kTRUE) const
 Print information about current value dirty state information.
 If depth flag is true, information is recursively printed for
 all nodes in this arg tree.
void optimizeCacheMode(const RooArgSet& observables)
 Activate cache mode optimization with given definition of observables.
 The cache operation mode of all objects in the expression tree will
 modified such that all nodes that depend directly or indirectly on
 any of the listed observables will be set to ADirty, as they are
 expected to change every time. This save change tracking overhead for
 nodes that are a priori known to change every time
void optimizeCacheMode(const RooArgSet& observables, RooArgSet& optNodes, RooLinkedList& processedNodes)
 Activate cache mode optimization with given definition of observables.
 The cache operation mode of all objects in the expression tree will
 modified such that all nodes that depend directly or indirectly on
 any of the listed observables will be set to ADirty, as they are
 expected to change every time. This save change tracking overhead for
 nodes that are a priori known to change every time
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 with a dataset in a test statistic calculation
Bool_t findConstantNodes(const RooArgSet& observables, RooArgSet& cacheList, RooLinkedList& processedNodes)
 Find branch nodes with all-constant parameters, and add them to the list of
 nodes that can be cached with a dataset in a test statistic calculation
void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode)
 Interface function signaling a request to perform constant term
 optimization. This default implementation takes no action other than to
 forward the calls to all servers
void setOperMode(RooAbsArg::OperMode mode, Bool_t recurseADirty = kTRUE)
 Change cache operation mode to given mode. If recurseAdirty
 is true, then a mode change to AlwaysDirty will automatically
 be propagated recursively to all client nodes
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.
 If namePat is not "*", only nodes with names matching the pattern will be printed.
 The client argument is used in recursive calls to properly display the value or shape nature
 of the client-server links. It should be zero in calls initiated by users.
void printCompactTree(ostream& os, const char* indent = "", const char* namePat = 0, RooAbsArg* client = 0)
 Print tree structure of expression tree on given ostream.
 If namePat is not "*", only nodes with names matching the pattern will be printed.
 The client argument is used in recursive calls to properly display the value or shape nature
 of the client-server links. It should be zero in calls initiated by users.
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.
 Lead nodes (variables) will not be shown

 If namePat is not "*", only nodes with names matching the pattern will be printed.
TString cleanBranchName() const
 Construct a mangled name from the actual name that
 is free of any math symbols that might be interpreted by TTree
UInt_t crc32(const char* data)
 Calculate crc32 checksum on given string
void printCompactTreeHook(ostream& os, const char* ind = "")
 Hook function interface for object to insert additional information
 when printed in the context of a tree structure. This default
 implementation prints nothing
void registerCache(RooAbsCache& cache)
 Register RooAbsCache with this object. This function is called
 by RooAbsCache constructors for objects that are a datamember
 of this RooAbsArg. By registering itself the RooAbsArg is aware
 of all its cache data members and will forward server change
 and cache mode change calls to the cache objects, which in turn
 can forward them their contents
void unRegisterCache(RooAbsCache& cache)
 Unregister a RooAbsCache. Called from the RooAbsCache destructor
Int_t numCaches() const
 Return number of registered caches
RooAbsCache* getCache(Int_t index) const
 Return registered cache object by index
RooArgSet* getVariables(Bool_t stripDisconnected = kTRUE) const
 Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
RooLinkedList getCloningAncestors() const
 Return ancestors in cloning chain of this RooAbsArg. NOTE: Returned pointers
 are not guaranteed to be 'live', so do not dereference without proper caution
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. Use the GraphViz tool suite to make e.g. a gif
 or ps file from the .dot file

 Based on concept developed by Kyle Cranmer
void graphVizTree(ostream& os, const char* delimiter = "\n", bool useTitle = false, bool useLatex = false)
 Write the GraphViz representation of the expression tree headed by
 this RooAbsArg object to the given ostream.

 Based on concept developed by Kyle Cranmer
void graphVizAddConnections(set<std::pair<RooAbsArg*,RooAbsArg*> >& )
 Utility function that inserts all point-to-point client-server connections
 between any two RooAbsArgs in the expression tree headed by this object
 in the linkSet argument.
Bool_t inhibitDirty()
 Return current status of the inhibitDirty global flag. If true
 no dirty state change tracking occurs and all caches are considered
 to be always dirty.
Bool_t addOwnedComponents(const RooArgSet& comps)
 Take ownership of the contents of 'comps'
RooAbsArg* cloneTree(const char* newname = 0) const
 Clone tree expression of objects. All tree nodes will be owned by
 the head node return by cloneTree()
RooExpensiveObjectCache& expensiveObjectCache() const
Bool_t flipAClean()
const char* aggregateCacheUniqueSuffix() const
TObject* clone(const char* newname) const
TObject* Clone(const char* newname = 0) const
Bool_t isDerived() const
 Accessors to client-server relation information
Bool_t dependsOnValue(const RooAbsCollection& serverList, const RooAbsArg* ignoreArg = 0) const
 Does this arg depend on the value of any of of the values in serverList?
Bool_t dependsOnValue(const RooAbsArg& server, const RooAbsArg* ignoreArg = 0) const
 Does this arg depend on the value of server?
Bool_t hasClients() const
{ return _clientList.GetSize()>0 ? kTRUE : kFALSE ; }
TIterator* clientIterator() const
 Return iterator over all client RooAbsArgs
TIterator* valueClientIterator() const
 Return iterator over all value client RooAbsArgs
TIterator* shapeClientIterator() const
 Return iterator over all shape client RooAbsArgs
TIterator* serverIterator() const
 Return iterator over all server RooAbsArgs
RooAbsArg* findServer(const char* name) const
 Return server of this arg with given name. Returns null if not found
RooAbsArg* findServer(const RooAbsArg& arg) const
 Return server of this arg with name of given input arg. Returns null if not found
RooAbsArg* findServer(Int_t index) const
 Return i-th server from server list
Bool_t isValueServer(const RooAbsArg& arg) const
 If true, arg is a value server of self
Bool_t isValueServer(const char* name) const
 If true, we have a server with given name
Bool_t isShapeServer(const RooAbsArg& arg) const
 If true arg is a shape server of self
Bool_t isShapeServer(const char* name) const
 If true, we have a shape server with given name
Bool_t isFundamental() const
 Is this object a fundamental type that can be added to a dataset?
 Fundamental-type subclasses override this method to return kTRUE.
 Note that this test is subtlely different from the dynamic isDerived()
 test, e.g. a constant is not derived but is also not fundamental.
RooAbsArg * createFundamental(const char* newname = 0) const
 Create a fundamental-type object that stores our type of value. The
 created object will have a valid value, but not necessarily the same
 as our value. The caller is responsible for deleting the returned object.
Bool_t isLValue() const
 Is this argument an l-value, ie, can it appear on the left-hand side
 of an assignment expression? LValues are also special since they can
 potentially be analytically integrated and generated.
RooArgSet* getParameters(const RooAbsData* data, Bool_t stripDisconnected = kTRUE) const
RooArgSet* getParameters(const RooAbsData& data, Bool_t stripDisconnected = kTRUE) const
 Return the parameters of this p.d.f when used in conjuction with dataset 'data'
RooArgSet* getObservables(const RooArgSet& set, Bool_t valueOnly = kTRUE) const
 Return the observables of _this_ pdf given a set of observables
return getObservables(&set,valueOnly)
RooArgSet* getDependents(const RooArgSet& set) const
 --- Obsolete functions for backward compatibility
{ return getObservables(set) ; }
RooArgSet* getDependents(const RooAbsData* set) const
{ return getObservables(set) ; }
RooArgSet* getDependents(const RooArgSet* depList) const
{ return getObservables(depList) ; }
Bool_t dependentOverlaps(const RooAbsData* dset, const RooAbsArg& testArg) const
{ return observableOverlaps(dset,testArg) ; }
Bool_t dependentOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const
{ return observableOverlaps(depList, testArg) ; }
Bool_t checkDependents(const RooArgSet* nset) const
{ return checkObservables(nset) ; }
Bool_t recursiveCheckDependents(const RooArgSet* nset) const
 --- End obsolete functions for backward compatibility
{ return recursiveCheckObservables(nset) ; }
Bool_t readFromStream(istream& is, Bool_t compact, Bool_t verbose = kFALSE)
 I/O streaming interface (machine readable)
void writeToStream(ostream& os, Bool_t compact) const
void Print(Option_t* options = 0) const
 Printing interface (human readable)
void printMetaArgs(ostream& ) const
{}
const std::set<std::string>& attributes() const
 Returns set of names of boolean attributes defined
const std::map<std::string,std::string>& stringAttributes() const
 Returns map<string,string> with all string attributes defined
const std::set<std::string>& transientAttributes() const
 Return set of transient boolean attributes
Bool_t isConstant() const
 Returns true if 'Constant' attribute is set
Bool_t IsSortable() const
 Object is sortable in ROOT container class
Bool_t operator==(const RooAbsArg& other)
Bool_t inRange(const char* ) const
 Range management
Bool_t hasRange(const char* ) const
 Has this argument a defined range (dummy interface always returns flase)
Bool_t isShapeDirty() const
 Dirty state accessor
Bool_t isValueDirty() const
 Returns true of value has been invalidated by server value change
OperMode operMode() const
{ return _operMode==AClean ? (flipAClean() ? ADirty : AClean ) : _operMode ; }
const RooArgSet* ownedComponents() const
{ return _ownedComponents ; }
void setProhibitServerRedirect(Bool_t flag)
void operModeHook()
friend class RooSimCloneTool ;
{}
void optimizeDirtyHook(const RooArgSet* )
{}
void getParametersHook(const RooArgSet* , RooArgSet* , Bool_t ) const
{}
void getObservablesHook(const RooArgSet* , RooArgSet* ) const
{}
void setValueDirty() const
 Dirty state modifiers
{ setValueDirty(0) ; }
void setShapeDirty() const
{ setShapeDirty(0) ; }
void clearValueDirty() const
void clearShapeDirty() const
const char* cacheUniqueSuffix() const
{ return 0 ; }
Bool_t redirectServersHook(const RooAbsCollection& , Bool_t , Bool_t , Bool_t )
{ return kFALSE ; }
void serverNameChangeHook(const RooAbsArg* , const RooAbsArg* )
{ }
void setExpensiveObjectCache(RooExpensiveObjectCache& cache)
{ _eocache = &cache ; }
Bool_t importWorkspaceHook(RooWorkspace& )
{ return kFALSE ; }
void syncCache(const RooArgSet* nset = 0)
void copyCache(const RooAbsArg* source, Bool_t valueOnly = kFALSE)
void setTreeBranchStatus(TTree& t, Bool_t active)
void fillTreeBranch(TTree& t)