Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooAbsArg.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooAbsArg.h,v 1.93 2007/07/16 21:04:28 wouter Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_ABS_ARG
17#define ROO_ABS_ARG
18
19#include "TNamed.h"
20#include "TObjArray.h"
21#include "TRefArray.h"
22#include "RooPrintable.h"
23#include "RooSTLRefCountList.h"
24#include "RooAbsCache.h"
25#include "RooNameReg.h"
26#include "RooLinkedListIter.h"
27#include <map>
28#include <set>
29#include <deque>
30#include <stack>
31#include <string>
32#include <iostream>
33
34#ifndef R__LESS_INCLUDES
35#include "TClass.h"
36#include "THashList.h"
37#endif
38
39
40class TTree ;
41class RooArgSet ;
42class RooAbsCollection ;
43class RooTreeDataStore ;
45class RooAbsData ;
46class RooAbsDataStore ;
47class RooAbsProxy ;
48class RooArgProxy ;
49class RooSetProxy ;
50class RooListProxy ;
52class RooWorkspace ;
53
54class RooRefArray : public TObjArray {
55 public:
57 } ;
58 RooRefArray(const RooRefArray& other) : TObjArray(other) {
59 }
60 RooRefArray& operator=(const RooRefArray& other) = default;
61 virtual ~RooRefArray() {} ;
62 protected:
63 ClassDef(RooRefArray,1) // Helper class for proxy lists
64} ;
65
66class RooAbsArg;
67/// Print at the prompt
68namespace cling {
69std::string printValue(RooAbsArg*);
70}
71
72class RooAbsArg : public TNamed, public RooPrintable {
73public:
76
77 // Constructors, cloning and assignment
78 RooAbsArg() ;
79 virtual ~RooAbsArg();
80 RooAbsArg(const char *name, const char *title);
81 RooAbsArg(const RooAbsArg& other, const char* name=0) ;
82 RooAbsArg& operator=(const RooAbsArg& other);
83 virtual TObject* clone(const char* newname=0) const = 0 ;
84 virtual TObject* Clone(const char* newname = 0) const {
85 return clone(newname && newname[0] != '\0' ? newname : nullptr);
86 }
87 virtual RooAbsArg* cloneTree(const char* newname=0) const ;
88
89 // Accessors to client-server relation information
90
91 /// Does value or shape of this arg depend on any other arg?
92 virtual Bool_t isDerived() const {
93 return kTRUE ;
94 }
95 Bool_t isCloneOf(const RooAbsArg& other) const ;
96
97 /// Check whether this object depends on values from an element in the `serverList`.
98 ///
99 /// @param serverList Test if one of the elements in this list serves values to `this`.
100 /// @param ignoreArg Ignore values served by this object.
101 /// @return True if values are served.
102 Bool_t dependsOnValue(const RooAbsCollection& serverList, const RooAbsArg* ignoreArg=0) const {
103 return dependsOn(serverList,ignoreArg,kTRUE) ;
104 }
105 /// Check whether this object depends on values served from the object passed as `server`.
106 ///
107 /// @param server Test if `server` serves values to `this`.
108 /// @param ignoreArg Ignore values served by this object.
109 /// @return True if values are served.
110 Bool_t dependsOnValue(const RooAbsArg& server, const RooAbsArg* ignoreArg=0) const {
111 return dependsOn(server,ignoreArg,kTRUE) ;
112 }
113 Bool_t dependsOn(const RooAbsCollection& serverList, const RooAbsArg* ignoreArg=0, Bool_t valueOnly=kFALSE) const ;
114 Bool_t dependsOn(const RooAbsArg& server, const RooAbsArg* ignoreArg=0, Bool_t valueOnly=kFALSE) const ;
115 Bool_t overlaps(const RooAbsArg& testArg, Bool_t valueOnly=kFALSE) const ;
116 Bool_t hasClients() const { return !_clientList.empty(); }
117
118 ////////////////////////////////////////////////////////////////////////////
119 /// \name Legacy RooFit interface.
120 /// This is a collection of functions that remain supported, but more elegant
121 /// interfaces are usually available.
122 /// @{
123
124 /// Retrieve a client iterator.
125 inline TIterator* clientIterator() const
126 R__SUGGEST_ALTERNATIVE("Use clients() and begin(), end() or range-based loops.") {
127 // Return iterator over all client RooAbsArgs
129 }
131 R__SUGGEST_ALTERNATIVE("Use valueClients() and begin(), end() or range-based loops.") {
132 // Return iterator over all shape client RooAbsArgs
134 }
136 R__SUGGEST_ALTERNATIVE("Use shapeClients() and begin(), end() or range-based loops.") {
137 // Return iterator over all shape client RooAbsArgs
139 }
140 inline TIterator* serverIterator() const
141 R__SUGGEST_ALTERNATIVE("Use servers() and begin(), end() or range-based loops.") {
142 // Return iterator over all server RooAbsArgs
144 }
145
147 R__SUGGEST_ALTERNATIVE("Use valueClients() and begin(), end() or range-based loops.") {
148 return RooFIter(std::unique_ptr<RefCountListLegacyIterator_t>(makeLegacyIterator(_clientListValue)));
149 }
151 R__SUGGEST_ALTERNATIVE("Use shapeClients() and begin(), end() or range-based loops.") {
152 return RooFIter(std::unique_ptr<RefCountListLegacyIterator_t>(makeLegacyIterator(_clientListShape)));
153 }
155 R__SUGGEST_ALTERNATIVE("Use servers() and begin(), end() or range-based loops.") {
156 return RooFIter(std::unique_ptr<RefCountListLegacyIterator_t>(makeLegacyIterator(_serverList)));
157 }
158
159 // --- Obsolete functions for backward compatibility
160 /// \deprecated Use getObservables()
161 inline RooArgSet* getDependents(const RooArgSet& set) const { return getObservables(set) ; }
162 /// \deprecated Use getObservables()
163 inline RooArgSet* getDependents(const RooAbsData* set) const { return getObservables(set) ; }
164 /// \deprecated Use getObservables()
165 inline RooArgSet* getDependents(const RooArgSet* depList) const { return getObservables(depList) ; }
166 /// \deprecated Use observableOverlaps()
167 inline Bool_t dependentOverlaps(const RooAbsData* dset, const RooAbsArg& testArg) const { return observableOverlaps(dset,testArg) ; }
168 /// \deprecated Use observableOverlaps()
169 inline Bool_t dependentOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const { return observableOverlaps(depList, testArg) ; }
170 /// \deprecated Use checkObservables()
171 inline Bool_t checkDependents(const RooArgSet* nset) const { return checkObservables(nset) ; }
172 /// \deprecated Use recursiveCheckObservables()
173 inline Bool_t recursiveCheckDependents(const RooArgSet* nset) const { return recursiveCheckObservables(nset) ; }
174 // --- End obsolete functions for backward compatibility
175 /// @}
176 ////////////////////////////////////////////////////////////////////////////
177
178 ////////////////////////////////////////////////////////////////////////////
179 /// \anchor clientServerInterface
180 /// \name Client-Server Interface
181 /// These functions allow RooFit to figure out who is serving values to whom.
182 /// @{
183
184 /// List of all clients of this object.
185 const RefCountList_t& clients() const {
186 return _clientList;
187 }
188 /// List of all value clients of this object. Value clients receive value updates.
190 return _clientListValue;
191 }
192 /// List of all shape clients of this object. Shape clients receive property information such as
193 /// changes of a value range.
195 return _clientListShape;
196 }
197
198 /// List of all servers of this object.
199 const RefCountList_t& servers() const {
200 return _serverList;
201 }
202 /// Return server of `this` with name `name`. Returns nullptr if not found.
203 inline RooAbsArg* findServer(const char *name) const {
204 const auto serverIt = _serverList.findByName(name);
205 return serverIt != _serverList.end() ? *serverIt : nullptr;
206 }
207 /// Return server of `this` that has the same name as `arg`. Returns `nullptr` if not found.
208 inline RooAbsArg* findServer(const RooAbsArg& arg) const {
209 const auto serverIt = _serverList.findByNamePointer(&arg);
210 return serverIt != _serverList.end() ? *serverIt : nullptr;
211 }
212 /// Return i-th server from server list.
213 inline RooAbsArg* findServer(Int_t index) const {
214 return _serverList.containedObjects()[index];
215 }
216 /// Check if `this` is serving values to `arg`.
217 inline Bool_t isValueServer(const RooAbsArg& arg) const {
219 }
220 /// Check if `this` is serving values to an object with name `name`.
221 inline Bool_t isValueServer(const char* name) const {
223 }
224 /// Check if `this` is serving shape to `arg`.
225 inline Bool_t isShapeServer(const RooAbsArg& arg) const {
227 }
228 /// Check if `this` is serving shape to an object with name `name`.
229 inline Bool_t isShapeServer(const char* name) const {
231 }
232 void leafNodeServerList(RooAbsCollection* list, const RooAbsArg* arg=0, Bool_t recurseNonDerived=kFALSE) const ;
233 void branchNodeServerList(RooAbsCollection* list, const RooAbsArg* arg=0, Bool_t recurseNonDerived=kFALSE) const ;
234 void treeNodeServerList(RooAbsCollection* list, const RooAbsArg* arg=0,
235 Bool_t doBranch=kTRUE, Bool_t doLeaf=kTRUE,
236 Bool_t valueOnly=kFALSE, Bool_t recurseNonDerived=kFALSE) const ;
237
238
239 /// Is this object a fundamental type that can be added to a dataset?
240 /// Fundamental-type subclasses override this method to return kTRUE.
241 /// Note that this test is subtlely different from the dynamic isDerived()
242 /// test, e.g. a constant is not derived but is also not fundamental.
243 inline virtual Bool_t isFundamental() const {
244 return kFALSE;
245 }
246
247 /// Create a fundamental-type object that stores our type of value. The
248 /// created object will have a valid value, but not necessarily the same
249 /// as our value. The caller is responsible for deleting the returned object.
250 virtual RooAbsArg *createFundamental(const char* newname=0) const = 0;
251
252 /// Is this argument an l-value, i.e., can it appear on the left-hand side
253 /// of an assignment expression? LValues are also special since they can
254 /// potentially be analytically integrated and generated.
255 inline virtual Bool_t isLValue() const {
256 return kFALSE;
257 }
258
259
260 // Server redirection interface
261 Bool_t redirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t isRecursionStep=kFALSE) ;
262 Bool_t recursiveRedirectServers(const RooAbsCollection& newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t recurseInNewSet=kTRUE) ;
263
264 /// Function that is called at the end of redirectServers(). Can be overloaded
265 /// to inject some class-dependent behavior after server redirection, e.g.
266 /// resetting of caches. The return value is meant to be an error flag, so in
267 /// case something goes wrong the function should return `true`.
268 ///
269 /// \see redirectServers() For a detailed explanation of the function parameters.
270 ///
271 /// \param[in] newServerList One of the original parameters passed to redirectServers().
272 /// \param[in] mustReplaceAll One of the original parameters passed to redirectServers().
273 /// \param[in] nameChange One of the original parameters passed to redirectServers().
274 /// \param[in] isRecursiveStep One of the original parameters passed to redirectServers().
275 virtual bool redirectServersHook(const RooAbsCollection & /*newServerList*/, bool /*mustReplaceAll*/,
276 bool /*nameChange*/, bool /*isRecursiveStep*/)
277 {
278 return false;
279 }
280
281
282 virtual void serverNameChangeHook(const RooAbsArg* /*oldServer*/, const RooAbsArg* /*newServer*/) { } ;
283
284 void addServer(RooAbsArg& server, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE, std::size_t refCount = 1);
285 void addServerList(RooAbsCollection& serverList, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE) ;
286 void replaceServer(RooAbsArg& oldServer, RooAbsArg& newServer, Bool_t valueProp, Bool_t shapeProp) ;
287 void changeServer(RooAbsArg& server, Bool_t valueProp, Bool_t shapeProp) ;
288 void removeServer(RooAbsArg& server, Bool_t force=kFALSE) ;
289 RooAbsArg *findNewServer(const RooAbsCollection &newSet, Bool_t nameChange) const;
290
291
292 /// @}
293 ///////////////////////////////////////////////////////////////////////////////
294
295
296 // Parameter & observable interpretation of servers
297 friend class RooProdPdf ;
298 friend class RooAddPdf ;
299 friend class RooAddPdfOrig ;
300 RooArgSet* getVariables(Bool_t stripDisconnected=kTRUE) const ;
301 RooArgSet* getParameters(const RooAbsData* data, bool stripDisconnected=true) const ;
302 /// Return the parameters of this p.d.f when used in conjuction with dataset 'data'
303 RooArgSet* getParameters(const RooAbsData& data, bool stripDisconnected=true) const {
304 return getParameters(&data,stripDisconnected) ;
305 }
306 /// Return the parameters of the p.d.f given the provided set of observables
307 RooArgSet* getParameters(const RooArgSet& observables, bool stripDisconnected=true) const {
308 return getParameters(&observables,stripDisconnected);
309 }
310 RooArgSet* getParameters(const RooArgSet* observables, bool stripDisconnected=true) const;
311 virtual bool getParameters(const RooArgSet* observables, RooArgSet& outputSet, bool stripDisconnected=true) const;
312 /// Given a set of possible observables, return the observables that this PDF depends on.
313 RooArgSet* getObservables(const RooArgSet& set, Bool_t valueOnly=kTRUE) const {
314 return getObservables(&set,valueOnly) ;
315 }
316 RooArgSet* getObservables(const RooAbsData* data) const ;
317 /// Return the observables of this pdf given the observables defined by `data`.
318 RooArgSet* getObservables(const RooAbsData& data) const {
319 return getObservables(&data) ;
320 }
321 RooArgSet* getObservables(const RooArgSet* depList, bool valueOnly=true) const ;
322 bool getObservables(const RooArgSet* depList, RooArgSet& outputSet, bool valueOnly=true) const;
323 Bool_t observableOverlaps(const RooAbsData* dset, const RooAbsArg& testArg) const ;
324 Bool_t observableOverlaps(const RooArgSet* depList, const RooAbsArg& testArg) const ;
325 virtual Bool_t checkObservables(const RooArgSet* nset) const ;
326 Bool_t recursiveCheckObservables(const RooArgSet* nset) const ;
327 RooArgSet* getComponents() const ;
328
329
330
331 void attachDataSet(const RooAbsData &set);
332 void attachDataStore(const RooAbsDataStore &set);
333
334 // I/O streaming interface (machine readable)
335 virtual Bool_t readFromStream(std::istream& is, Bool_t compact, Bool_t verbose=kFALSE) = 0 ;
336 virtual void writeToStream(std::ostream& os, Bool_t compact) const = 0 ;
337
338 /// Print the object to the defaultPrintStream().
339 /// \param[in] options **V** print verbose. **T** print a tree structure with all children.
340 virtual void Print(Option_t *options= 0) const {
341 // Printing interface (human readable)
343 }
344
345 virtual void printName(std::ostream& os) const ;
346 virtual void printTitle(std::ostream& os) const ;
347 virtual void printClassName(std::ostream& os) const ;
348 virtual void printAddress(std::ostream& os) const ;
349 virtual void printArgs(std::ostream& os) const ;
350 virtual void printMetaArgs(std::ostream& /*os*/) const {} ;
351 virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const;
352 virtual void printTree(std::ostream& os, TString indent="") const ;
353
354 virtual Int_t defaultPrintContents(Option_t* opt) const ;
355
356 // Accessors to attributes
357 void setAttribute(const Text_t* name, Bool_t value=kTRUE) ;
358 Bool_t getAttribute(const Text_t* name) const ;
359 inline const std::set<std::string>& attributes() const {
360 // Returns set of names of boolean attributes defined
361 return _boolAttrib ;
362 }
363
364 void setStringAttribute(const Text_t* key, const Text_t* value) ;
365 const Text_t* getStringAttribute(const Text_t* key) const ;
366 inline const std::map<std::string,std::string>& stringAttributes() const {
367 // Returns std::map<string,string> with all string attributes defined
368 return _stringAttrib ;
369 }
370
371 // Accessors to transient attributes
372 void setTransientAttribute(const Text_t* name, Bool_t value=kTRUE) ;
374 inline const std::set<std::string>& transientAttributes() const {
375 // Return set of transient boolean attributes
376 return _boolAttribTransient ;
377 }
378
379 /// Check if the "Constant" attribute is set.
380 inline Bool_t isConstant() const {
381 return _isConstant ; //getAttribute("Constant") ;
382 }
384
385 // Sorting
386 Int_t Compare(const TObject* other) const ;
387 virtual Bool_t IsSortable() const {
388 // Object is sortable in ROOT container class
389 return kTRUE ;
390 }
391
392 virtual bool operator==(const RooAbsArg& other) const = 0 ;
393 virtual bool isIdentical(const RooAbsArg& other, Bool_t assumeSameType=kFALSE) const = 0 ;
394
395 // Range management
396 virtual Bool_t inRange(const char*) const {
397 // Is value in range (dummy interface always returns true)
398 return kTRUE ;
399 }
400 virtual Bool_t hasRange(const char*) const {
401 // Has this argument a defined range (dummy interface always returns flase)
402 return kFALSE ;
403 }
404
405
407 enum CacheMode { Always=0, NotAdvised=1, Never=2 } ;
408 enum OperMode { Auto=0, AClean=1, ADirty=2 } ;
409
410 ////////////////////////////////////////////////////////////////////////////
411 /// \anchor optimisationInterface
412 /// \name Optimisation interface
413 /// These functions allow RooFit to optimise a computation graph, to keep track
414 /// of cached values, and to invalidate caches.
415 /// @{
416
417 // Cache mode optimization (tracks changes & do lazy evaluation vs evaluate always)
418 virtual void optimizeCacheMode(const RooArgSet& observables) ;
419 virtual void optimizeCacheMode(const RooArgSet& observables, RooArgSet& optNodes, RooLinkedList& processedNodes) ;
420
421
422 // Find constant terms in expression
423 Bool_t findConstantNodes(const RooArgSet& observables, RooArgSet& cacheList) ;
424 Bool_t findConstantNodes(const RooArgSet& observables, RooArgSet& cacheList, RooLinkedList& processedNodes) ;
425
426
427 // constant term optimization
428 virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt=kTRUE) ;
429
430 virtual CacheMode canNodeBeCached() const { return Always ; }
431 virtual void setCacheAndTrackHints(RooArgSet& /*trackNodes*/ ) {} ;
432
433 // Dirty state accessor
434 inline Bool_t isShapeDirty() const {
435 // Return true is shape has been invalidated by server value change
436 return isDerived()?_shapeDirty:kFALSE ;
437 }
438
439 inline Bool_t isValueDirty() const {
440 // Returns true of value has been invalidated by server value change
441 if (inhibitDirty()) return kTRUE ;
442 switch(_operMode) {
443 case AClean:
444 return kFALSE ;
445 case ADirty:
446 return kTRUE ;
447 case Auto:
448 if (_valueDirty) return isDerived() ;
449 return kFALSE ;
450 }
451 return kTRUE ; // we should never get here
452 }
453
455 // Returns true of value has been invalidated by server value change
456 if (inhibitDirty()) return kTRUE ;
457 switch(_operMode) {
458 case AClean:
459 return kFALSE ;
460 case ADirty:
461 return kTRUE ;
462 case Auto:
463 if (_valueDirty) {
465 return isDerived();
466 }
467 return kFALSE ;
468 }
469 return kTRUE ; // But we should never get here
470 }
471
472
474 // Returns true of value has been invalidated by server value change
475
476 if (inhibitDirty()) return kTRUE ;
477 switch(_operMode) {
478 case AClean:
479 return kFALSE ;
480 case ADirty:
481 return kTRUE ;
482 case Auto:
483 if (_valueDirty || _shapeDirty) {
486 return isDerived();
487 }
490 return kFALSE ;
491 }
492 return kTRUE ; // But we should never get here
493 }
494
495 // Cache management
496 void registerCache(RooAbsCache& cache) ;
497 void unRegisterCache(RooAbsCache& cache) ;
498 Int_t numCaches() const ;
499 RooAbsCache* getCache(Int_t index) const ;
500
501 /// Query the operation mode of this node.
502 inline OperMode operMode() const { return _operMode ; }
503 /// Set the operation mode of this node.
504 void setOperMode(OperMode mode, Bool_t recurseADirty=kTRUE) ;
505
506 // Dirty state modifiers
507 /// Mark the element dirty. This forces a re-evaluation when a value is requested.
509 if (_operMode == Auto && !inhibitDirty())
510 setValueDirty(nullptr);
511 }
512 /// Notify that a shape-like property (*e.g.* binning) has changed.
513 void setShapeDirty() { setShapeDirty(nullptr); }
514
515 const char* aggregateCacheUniqueSuffix() const ;
516 virtual const char* cacheUniqueSuffix() const { return 0 ; }
517
518 void wireAllCaches() ;
519
522
523 /// @}
524 ////////////////////////////////////////////////////////////////////////////
525
526 //Debug hooks
527 static void verboseDirty(Bool_t flag) ;
528 void printDirty(Bool_t depth=kTRUE) const ;
529 static void setDirtyInhibit(Bool_t flag) ;
530
531 void graphVizTree(const char* fileName, const char* delimiter="\n", bool useTitle=false, bool useLatex=false) ;
532 void graphVizTree(std::ostream& os, const char* delimiter="\n", bool useTitle=false, bool useLatex=false) ;
533
534 void printComponentTree(const char* indent="",const char* namePat=0, Int_t nLevel=999) ;
535 void printCompactTree(const char* indent="",const char* fileName=0, const char* namePat=0, RooAbsArg* client=0) ;
536 void printCompactTree(std::ostream& os, const char* indent="", const char* namePat=0, RooAbsArg* client=0) ;
537 virtual void printCompactTreeHook(std::ostream& os, const char *ind="") ;
538
539 Bool_t addOwnedComponents(const RooArgSet& comps) ;
540 const RooArgSet* ownedComponents() const { return _ownedComponents ; }
541
543
545
546 RooAbsProxy* getProxy(Int_t index) const ;
547 Int_t numProxies() const ;
548
549
550 inline const TNamed* namePtr() const {
551 return _namePtr ;
552 }
553
554 void SetName(const char* name) ;
555 void SetNameTitle(const char *name, const char *title) ;
556
558 {
559 _myws = &ws;
560 return kFALSE;
561 };
562
563
564protected:
565 void graphVizAddConnections(std::set<std::pair<RooAbsArg*,RooAbsArg*> >&) ;
566
567 virtual void operModeHook() {} ;
568
569 virtual void optimizeDirtyHook(const RooArgSet* /*obs*/) {} ;
570
571 virtual Bool_t isValid() const ;
572
573 virtual void getParametersHook(const RooArgSet* /*nset*/, RooArgSet* /*list*/, Bool_t /*stripDisconnected*/) const {} ;
574 virtual void getObservablesHook(const RooArgSet* /*nset*/, RooArgSet* /*list*/) const {} ;
575
579 }
580
581 void clearValueDirty() const {
583 }
584 void clearShapeDirty() const {
586 }
587
588 /// Force element to re-evaluate itself when a value is requested.
589 void setValueDirty(const RooAbsArg* source);
590 /// Notify that a shape-like property (*e.g.* binning) has changed.
591 void setShapeDirty(const RooAbsArg* source);
592
593 virtual void ioStreamerPass2() ;
594 static void ioStreamerPass2Finalize() ;
595
596
597private:
598 void addParameters(RooArgSet& params, const RooArgSet* nset=0, Bool_t stripDisconnected=kTRUE) const;
599
601
602
603 protected:
604
605 // Client-Server relation and Proxy management
606 friend class RooArgSet ;
607 friend class RooAbsCollection ;
608 friend class RooCustomizer ;
609 friend class RooWorkspace ;
610 friend class RooExtendPdf ;
611 friend class RooRealIntegral ;
612 friend class RooAbsReal ;
613 friend class RooProjectedPdf ;
614 RefCountList_t _serverList ; // list of server objects
615 RefCountList_t _clientList; // list of client objects
616 RefCountList_t _clientListShape; // subset of clients that requested shape dirty flag propagation
617 RefCountList_t _clientListValue; // subset of clients that requested value dirty flag propagation
618
619 RooRefArray _proxyList ; // list of proxies
620 std::deque<RooAbsCache*> _cacheList ; // list of caches
621
622
623 // Proxy management
624 friend class RooAddModel ;
625 friend class RooArgProxy ;
626 friend class RooSetProxy ;
627 friend class RooListProxy ;
628 friend class RooObjectFactory ;
629 friend class RooHistPdf ;
630 friend class RooHistFunc ;
631 friend class RooHistFunc2 ;
632 void registerProxy(RooArgProxy& proxy) ;
633 void registerProxy(RooSetProxy& proxy) ;
634 void registerProxy(RooListProxy& proxy) ;
635 void unRegisterProxy(RooArgProxy& proxy) ;
636 void unRegisterProxy(RooSetProxy& proxy) ;
637 void unRegisterProxy(RooListProxy& proxy) ;
638 void setProxyNormSet(const RooArgSet* nset) ;
639
640 // Attribute list
641 std::set<std::string> _boolAttrib ; // Boolean attributes
642 std::map<std::string,std::string> _stringAttrib ; // String attributes
643 std::set<std::string> _boolAttribTransient ; //! Transient boolean attributes (not copied in ctor)
644
645 void printAttribList(std::ostream& os) const;
646
647 // Hooks for RooTreeData interface
649 friend class RooTreeDataStore ;
650 friend class RooVectorDataStore ;
651 friend class RooDataSet ;
652 friend class RooRealMPFE ;
653 virtual void syncCache(const RooArgSet* nset=0) = 0 ;
654 virtual void copyCache(const RooAbsArg* source, Bool_t valueOnly=kFALSE, Bool_t setValDirty=kTRUE) = 0 ;
655
656 virtual void attachToTree(TTree& t, Int_t bufSize=32000) = 0 ;
657 virtual void attachToVStore(RooVectorDataStore& vstore) = 0 ;
658 /// Attach this argument to the data store such that it reads data from there.
659 void attachToStore(RooAbsDataStore& store) ;
660
661 virtual void setTreeBranchStatus(TTree& t, Bool_t active) = 0 ;
662 virtual void fillTreeBranch(TTree& t) = 0 ;
663 TString cleanBranchName() const ;
664
665 // Global
666 friend std::ostream& operator<<(std::ostream& os, const RooAbsArg &arg);
667 friend std::istream& operator>>(std::istream& is, RooAbsArg &arg) ;
669
670 // Debug stuff
671 static Bool_t _verboseDirty ; // Static flag controlling verbose messaging for dirty state changes
672 static Bool_t _inhibitDirty ; // Static flag controlling global inhibit of dirty state propagation
673 Bool_t _deleteWatch ; //! Delete watch flag
674
675 Bool_t inhibitDirty() const ;
676
677 public:
680 protected:
681
682
683 mutable Bool_t _valueDirty ; // Flag set if value needs recalculating because input values modified
684 mutable Bool_t _shapeDirty ; // Flag set if value needs recalculating because input shapes modified
685 mutable bool _allBatchesDirty{true}; //! Mark batches as dirty (only meaningful for RooAbsReal).
686
687 mutable OperMode _operMode ; // Dirty state propagation mode
688 mutable Bool_t _fast ; // Allow fast access mode in getVal() and proxies
689
690 // Owned components
691 RooArgSet* _ownedComponents ; //! Set of owned component
692
693 mutable Bool_t _prohibitServerRedirect ; //! Prohibit server redirects -- Debugging tool
694
695 mutable RooExpensiveObjectCache* _eocache{nullptr}; // Pointer to global cache manager for any expensive components created by this object
696
697 mutable TNamed* _namePtr ; //! Do not persist. Pointer to global instance of string that matches object named
698 Bool_t _isConstant ; //! Cached isConstant status
699
700 mutable Bool_t _localNoInhibitDirty ; //! Prevent 'AlwaysDirty' mode for this node
701
702/* RooArgSet _leafNodeCache ; //! Cached leaf nodes */
703/* RooArgSet _branchNodeCache //! Cached branch nodes */
704
705 mutable RooWorkspace *_myws; //! In which workspace do I live, if any
706
707 /// \cond Internal
708 // Legacy streamers need the following statics:
709 friend class RooFitResult;
710
711 public:
712 static std::map<RooAbsArg*,std::unique_ptr<TRefArray>> _ioEvoList; // temporary holding list for proxies needed in schema evolution
713 protected:
714 static std::stack<RooAbsArg*> _ioReadStack ; // reading stack
715 /// \endcond
716
717 ClassDef(RooAbsArg,7) // Abstract variable
718};
719
720std::ostream& operator<<(std::ostream& os, const RooAbsArg &arg);
721std::istream& operator>>(std::istream& is, RooAbsArg &arg);
722
723
724#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:534
std::istream & operator>>(std::istream &is, RooAbsArg &arg)
Istream operator.
char Text_t
Definition RtypesCore.h:62
const Bool_t kFALSE
Definition RtypesCore.h:92
const Bool_t kTRUE
Definition RtypesCore.h:91
const char Option_t
Definition RtypesCore.h:66
#define ClassDef(name, id)
Definition Rtypes.h:325
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
Definition TBuffer.h:399
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition TGX11.cxx:110
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition RooAbsArg.h:72
RooExpensiveObjectCache & expensiveObjectCache() const
virtual Bool_t IsSortable() const
Definition RooAbsArg.h:387
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.
RooRefArray _proxyList
Definition RooAbsArg.h:619
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
Given a set of possible observables, return the observables that this PDF depends on.
Definition RooAbsArg.h:313
virtual bool isIdentical(const RooAbsArg &other, Bool_t assumeSameType=kFALSE) const =0
Bool_t _fast
Definition RooAbsArg.h:688
void clearValueAndShapeDirty() const
Definition RooAbsArg.h:576
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.
TNamed * _namePtr
Definition RooAbsArg.h:697
virtual Bool_t importWorkspaceHook(RooWorkspace &ws)
Definition RooAbsArg.h:557
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
Definition RooAbsArg.h:550
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.
virtual Bool_t isLValue() const
Is this argument an l-value, i.e., can it appear on the left-hand side of an assignment expression?...
Definition RooAbsArg.h:255
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.
Definition RooAbsArg.h:217
virtual void getObservablesHook(const RooArgSet *, RooArgSet *) const
Definition RooAbsArg.h:574
RooWorkspace * _myws
Prevent 'AlwaysDirty' mode for this node.
Definition RooAbsArg.h:705
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 bool operator==(const RooAbsArg &other) const =0
virtual void printClassName(std::ostream &os) const
Print object class name.
RooArgSet * _ownedComponents
Definition RooAbsArg.h:691
std::deque< RooAbsCache * > _cacheList
Definition RooAbsArg.h:620
void setShapeDirty()
Notify that a shape-like property (e.g. binning) has changed.
Definition RooAbsArg.h:513
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.
friend class RooHistFunc2
Definition RooAbsArg.h:631
Bool_t checkDependents(const RooArgSet *nset) const
Definition RooAbsArg.h:171
friend std::ostream & operator<<(std::ostream &os, const RooAbsArg &arg)
RooFIter valueClientMIterator() const
Definition RooAbsArg.h:146
Bool_t isShapeServer(const RooAbsArg &arg) const
Check if this is serving shape to arg.
Definition RooAbsArg.h:225
RooArgSet * getDependents(const RooArgSet &set) const
Definition RooAbsArg.h:161
void setStringAttribute(const Text_t *key, const Text_t *value)
Associate string 'value' to this object under key 'key'.
friend class RooObjectFactory
Definition RooAbsArg.h:628
static void ioStreamerPass2Finalize()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
RooArgSet * getDependents(const RooAbsData *set) const
Definition RooAbsArg.h:163
virtual CacheMode canNodeBeCached() const
Definition RooAbsArg.h:430
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 setTreeBranchStatus(TTree &t, Bool_t active)=0
void setProhibitServerRedirect(Bool_t flag)
Definition RooAbsArg.h:542
void setWorkspace(RooWorkspace &ws)
Definition RooAbsArg.h:544
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Implement multi-line detailed printing.
friend class RooAddPdfOrig
Definition RooAbsArg.h:299
virtual TObject * Clone(const char *newname=0) const
Make a clone of an object using the Streamer facility.
Definition RooAbsArg.h:84
const RooArgSet * ownedComponents() const
Definition RooAbsArg.h:540
Bool_t isCloneOf(const RooAbsArg &other) const
Check if this object was created as a clone of 'other'.
Bool_t isShapeDirty() const
Definition RooAbsArg.h:434
virtual void copyCache(const RooAbsArg *source, Bool_t valueOnly=kFALSE, Bool_t setValDirty=kTRUE)=0
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.
const RefCountList_t & shapeClients() const
List of all shape clients of this object.
Definition RooAbsArg.h:194
Bool_t inhibitDirty() const
Delete watch flag.
RooSTLRefCountList< RooAbsArg > RefCountList_t
Definition RooAbsArg.h:74
const RefCountList_t & valueClients() const
List of all value clients of this object. Value clients receive value updates.
Definition RooAbsArg.h:189
friend std::istream & operator>>(std::istream &is, RooAbsArg &arg)
Istream operator.
RooArgSet * getObservables(const RooAbsData &data) const
Return the observables of this pdf given the observables defined by data.
Definition RooAbsArg.h:318
virtual void setExpensiveObjectCache(RooExpensiveObjectCache &cache)
Definition RooAbsArg.h:521
std::set< std::string > _boolAttrib
Definition RooAbsArg.h:641
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...
Definition RooAbsArg.h:243
virtual void printTitle(std::ostream &os) const
Print object title.
Bool_t isValueOrShapeDirtyAndClear() const
Definition RooAbsArg.h:473
RefCountList_t _clientListValue
Definition RooAbsArg.h:617
void printAttribList(std::ostream &os) const
Transient boolean attributes (not copied in ctor)
Bool_t dependentOverlaps(const RooAbsData *dset, const RooAbsArg &testArg) const
Definition RooAbsArg.h:167
virtual void Print(Option_t *options=0) const
Print the object to the defaultPrintStream().
Definition RooAbsArg.h:340
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
RooArgSet * getParameters(const RooArgSet &observables, bool stripDisconnected=true) const
Return the parameters of the p.d.f given the provided set of observables.
Definition RooAbsArg.h:307
Bool_t hasClients() const
Definition RooAbsArg.h:116
virtual void printAddress(std::ostream &os) const
Print class name of object.
RooArgSet * getParameters(const RooAbsData &data, bool stripDisconnected=true) const
Return the parameters of this p.d.f when used in conjuction with dataset 'data'.
Definition RooAbsArg.h:303
RooFIter serverMIterator() const
Definition RooAbsArg.h:154
void setTransientAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
virtual void serverNameChangeHook(const RooAbsArg *, const RooAbsArg *)
Definition RooAbsArg.h:282
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 ...
virtual void setCacheAndTrackHints(RooArgSet &)
Definition RooAbsArg.h:431
const std::set< std::string > & attributes() const
Definition RooAbsArg.h:359
Bool_t _isConstant
Do not persist. Pointer to global instance of string that matches object named.
Definition RooAbsArg.h:698
Bool_t isValueDirty() const
Definition RooAbsArg.h:439
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)
void clearValueDirty() const
Definition RooAbsArg.h:581
virtual void ioStreamerPass2()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
void wireAllCaches()
Bool_t _valueDirty
Definition RooAbsArg.h:683
virtual ~RooAbsArg()
Destructor.
virtual Bool_t isDerived() const
Does value or shape of this arg depend on any other arg?
Definition RooAbsArg.h:92
static Bool_t _inhibitDirty
Definition RooAbsArg.h:672
virtual const char * cacheUniqueSuffix() const
Definition RooAbsArg.h:516
RefCountListLegacyIterator_t * makeLegacyIterator(const RefCountList_t &list) const
const RefCountList_t & servers() const
List of all servers of this object.
Definition RooAbsArg.h:199
TIterator * valueClientIterator() const
Definition RooAbsArg.h:130
Bool_t _localNoInhibitDirty
Cached isConstant status.
Definition RooAbsArg.h:700
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).
Definition RooAbsArg.h:687
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.
Definition RooAbsArg.h:508
RooAbsArg * findServer(const RooAbsArg &arg) const
Return server of this that has the same name as arg. Returns nullptr if not found.
Definition RooAbsArg.h:208
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.
const std::map< std::string, std::string > & stringAttributes() const
Definition RooAbsArg.h:366
RooAbsCache * getCache(Int_t index) const
Return registered cache object by index.
virtual void syncCache(const RooArgSet *nset=0)=0
void printDirty(Bool_t depth=kTRUE) const
Print information about current value dirty state information.
bool _allBatchesDirty
Definition RooAbsArg.h:685
static Bool_t _verboseDirty
Definition RooAbsArg.h:671
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
Definition RooAbsArg.h:616
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 recursiveCheckDependents(const RooArgSet *nset) const
Definition RooAbsArg.h:173
Bool_t _prohibitServerRedirect
Set of owned component.
Definition RooAbsArg.h:693
RooAbsArg * findServer(Int_t index) const
Return i-th server from server list.
Definition RooAbsArg.h:213
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'.
const std::set< std::string > & transientAttributes() const
Definition RooAbsArg.h:374
const RefCountList_t & clients() const
List of all clients of this object.
Definition RooAbsArg.h:185
RooArgSet * getDependents(const RooArgSet *depList) const
Definition RooAbsArg.h:165
virtual void getParametersHook(const RooArgSet *, RooArgSet *, Bool_t) const
Definition RooAbsArg.h:573
virtual void printMetaArgs(std::ostream &) const
Definition RooAbsArg.h:350
Bool_t isShapeServer(const char *name) const
Check if this is serving shape to an object with name name.
Definition RooAbsArg.h:229
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.
Definition RooAbsArg.h:102
TIterator * shapeClientIterator() const
Definition RooAbsArg.h:135
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
RefCountList_t _clientList
Definition RooAbsArg.h:615
Bool_t dependsOnValue(const RooAbsArg &server, const RooAbsArg *ignoreArg=0) const
Check whether this object depends on values served from the object passed as server.
Definition RooAbsArg.h:110
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
RooFIter shapeClientMIterator() const
Definition RooAbsArg.h:150
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().
Definition RooAbsArg.h:275
Bool_t isValueDirtyAndClear() const
Definition RooAbsArg.h:454
Bool_t dependentOverlaps(const RooArgSet *depList, const RooAbsArg &testArg) const
Definition RooAbsArg.h:169
RefCountList_t _serverList
Definition RooAbsArg.h:614
void clearShapeDirty() const
Definition RooAbsArg.h:584
virtual RooAbsArg * createFundamental(const char *newname=0) const =0
Create a fundamental-type object that stores our type of value.
RooExpensiveObjectCache * _eocache
Prohibit server redirects – Debugging tool.
Definition RooAbsArg.h:695
RooArgSet * getComponents() const
Create a RooArgSet with all components (branch nodes) of the expression tree headed by this object.
std::set< std::string > _boolAttribTransient
Definition RooAbsArg.h:643
Bool_t _shapeDirty
Definition RooAbsArg.h:684
void setLocalNoDirtyInhibit(Bool_t flag) const
Definition RooAbsArg.h:678
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.
Definition RooAbsArg.h:380
virtual void fillTreeBranch(TTree &t)=0
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()
Definition RooAbsArg.h:567
TIterator * clientIterator() const
Retrieve a client iterator.
Definition RooAbsArg.h:125
virtual void optimizeDirtyHook(const RooArgSet *)
Definition RooAbsArg.h:569
Bool_t getTransientAttribute(const Text_t *name) const
Check if a named attribute is set.
TIterator * serverIterator() const
Definition RooAbsArg.h:140
std::map< std::string, std::string > _stringAttrib
Definition RooAbsArg.h:642
virtual Bool_t inRange(const char *) const
Definition RooAbsArg.h:396
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.
Bool_t isValueServer(const char *name) const
Check if this is serving values to an object with name name.
Definition RooAbsArg.h:221
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
virtual Bool_t hasRange(const char *) const
Definition RooAbsArg.h:400
virtual TObject * clone(const char *newname=0) const =0
virtual void printArgs(std::ostream &os) const
Print object arguments, ie its proxies.
TIteratorToSTLInterface< RefCountList_t::Container_t > RefCountListLegacyIterator_t
Definition RooAbsArg.h:75
RooAbsArg * findServer(const char *name) const
Return server of this with name name. Returns nullptr if not found.
Definition RooAbsArg.h:203
void SetName(const char *name)
Set the name of the TNamed.
void addParameters(RooArgSet &params, const RooArgSet *nset=0, Bool_t stripDisconnected=kTRUE) const
INTERNAL helper function for getParameters()
Bool_t localNoDirtyInhibit() const
Definition RooAbsArg.h:679
Bool_t _deleteWatch
Definition RooAbsArg.h:673
OperMode operMode() const
Query the operation mode of this node.
Definition RooAbsArg.h:502
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...
Definition RooAbsCache.h:27
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooAbsDataStore is the abstract base class for data collection that use a TTree as internal storage m...
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition RooAbsData.h:49
RooAbsProxy is the abstact interface for proxy classes.
Definition RooAbsProxy.h:30
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:61
RooAddModel is an efficient implementation of a sum of PDFs of the form.
Definition RooAddModel.h:27
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:32
RooArgProxy is the abstract interface for RooAbsArg proxy classes.
Definition RooArgProxy.h:24
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:29
RooCompositeDataStore combines several disjunct datasets into one.
RooCustomizer is a factory class to produce clones of a prototype composite PDF object with the same ...
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:33
RooExpensiveObjectCache is a singleton class that serves as repository for objects that are expensive...
RooExtendPdf is a wrapper around an existing PDF that adds a parameteric extended likelihood term to ...
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
RooHistFunc implements a real-valued function sampled from a multidimensional histogram.
Definition RooHistFunc.h:30
RooHistPdf implements a probablity density function sampled from a multidimensional histogram.
Definition RooHistPdf.h:29
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
RooListProxy is the concrete proxy for RooArgList objects.
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
virtual StyleOption defaultPrintStyle(Option_t *opt) const
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
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,...
RooProdPdf is an efficient implementation of a product of PDFs of the form.
Definition RooProdPdf.h:37
Class RooProjectedPdf is a RooAbsPdf implementation that represent a projection of a given input p....
RooRealIntegral performs hybrid numerical/analytical integrals of RooAbsReal objects.
RooRealMPFE is the multi-processor front-end for parallel calculation of RooAbsReal objects.
Definition RooRealMPFE.h:30
RooRefArray & operator=(const RooRefArray &other)=default
RooRefArray(const RooRefArray &other)
Definition RooAbsArg.h:58
virtual ~RooRefArray()
Definition RooAbsArg.h:61
Container_t::const_iterator findByNamePointer(const T *item) const
Find an item by comparing RooAbsArg::namePtr() adresses.
bool containsSameName(const char *name) const
Check if list contains an item using findByName().
const Container_t & containedObjects() const
Direct reference to container of objects held by this list.
Container_t::const_iterator end() const
End of contained objects.
bool empty() const
Check if empty.
Container_t::const_iterator findByName(const char *name) const
Find an item by comparing strings returned by RooAbsArg::GetName()
bool containsByNamePtr(const T *obj) const
Check if list contains an item using findByNamePointer().
RooSetProxy is the concrete proxy for RooArgSet objects.
Definition RooSetProxy.h:23
RooTreeDataStore is a TTree-backed data storage.
RooVectorDataStore uses std::vectors to store data columns.
The RooWorkspace is a persistable container for RooFit projects.
Buffer base class used for serializing objects.
Definition TBuffer.h:43
TIterator and GenericRooFIter front end with STL back end.
Iterator abstract base class.
Definition TIterator.h:30
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
An array of TObjects.
Definition TObjArray.h:37
Mother of all ROOT objects.
Definition TObject.h:37
Basic string class.
Definition TString.h:136
A TTree represents a columnar dataset.
Definition TTree.h:79
void ws()
Definition ws.C:66