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 <RooAbsCache.h>
20#include <RooFit/Config.h>
22#include <RooLinkedListIter.h>
23#include <RooNameReg.h>
24#include <RooPrintable.h>
25#include <RooSTLRefCountList.h>
26#include <RooStringView.h>
27
28#include <TNamed.h>
29#include <TObjArray.h>
30#include <TRefArray.h>
31
32#include <iostream>
33#include <limits>
34#include <map>
35#include <memory>
36#include <set>
37#include <string>
38#include <unordered_map>
39
40class TTree;
41class RooArgSet;
44class RooAbsData;
45class RooAbsDataStore;
46class RooAbsProxy;
47class RooArgProxy;
48template <class RooCollection_t>
53class RooWorkspace;
54namespace RooFit {
55class Evaluator;
56namespace Experimental {
57class CodegenContext;
58}
59} // namespace RooFit
60
61class RooRefArray : public TObjArray {
62public:
63 RooRefArray() = default;
64 RooRefArray(const RooRefArray &other) : TObjArray(other) {}
65 RooRefArray &operator=(const RooRefArray &other) = default;
66
67protected:
68 ClassDefOverride(RooRefArray, 1) // Helper class for proxy lists
69};
70
71class RooAbsArg;
72/// Print at the prompt
73namespace cling {
74std::string printValue(RooAbsArg *);
75}
76
77class RooAbsArg : public TNamed, public RooPrintable {
78public:
79 using RefCountList_t = RooSTLRefCountList<RooAbsArg>;
81
82 // Constructors, cloning and assignment
83 RooAbsArg();
84 ~RooAbsArg() override;
85 RooAbsArg(const char *name, const char *title);
86 RooAbsArg(const RooAbsArg &other, const char *name = nullptr);
87 RooAbsArg &operator=(const RooAbsArg &other) = delete;
88 virtual TObject *clone(const char *newname = nullptr) const = 0;
89 TObject *Clone(const char *newname = nullptr) const override
90 {
91 return clone(newname && newname[0] != '\0' ? newname : nullptr);
92 }
93 virtual RooAbsArg *cloneTree(const char *newname = nullptr) const;
94
95 // Accessors to client-server relation information
96
97 /// Does value or shape of this arg depend on any other arg?
98 virtual bool isDerived() const { return true; }
99
100 /// Check whether this object depends on values from an element in the `serverList`.
101 ///
102 /// @param serverList Test if one of the elements in this list serves values to `this`.
103 /// @param ignoreArg Ignore values served by this object.
104 /// @return True if values are served.
105 bool dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg = nullptr) const
106 {
107 return dependsOn(serverList, ignoreArg, true);
108 }
109 /// Check whether this object depends on values served from the object passed as `server`.
110 ///
111 /// @param server Test if `server` serves values to `this`.
112 /// @param ignoreArg Ignore values served by this object.
113 /// @return True if values are served.
114 bool dependsOnValue(const RooAbsArg &server, const RooAbsArg *ignoreArg = nullptr) const
115 {
116 return dependsOn(server, ignoreArg, true);
117 }
118 bool
119 dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg = nullptr, bool valueOnly = false) const;
120 /// Test whether we depend on (ie, are served by) the specified object.
121 /// Note that RooAbsArg objects are considered equivalent if they have
122 /// the same name.
123 inline bool dependsOn(const RooAbsArg &server, const RooAbsArg *ignoreArg = nullptr, bool valueOnly = false) const
124 {
125 return dependsOn(server.namePtr(), ignoreArg, valueOnly);
126 }
127 bool dependsOn(TNamed const *namePtr, const RooAbsArg *ignoreArg = nullptr, bool valueOnly = false) const;
128 bool overlaps(const RooAbsArg &testArg, bool valueOnly = false) const;
129 bool hasClients() const { return !_clientList.empty(); }
130
131 ////////////////////////////////////////////////////////////////////////////
132 /// \anchor clientServerInterface
133 /// \name Client-Server Interface
134 /// These functions allow RooFit to figure out who is serving values to whom.
135 /// @{
136
137 /// List of all clients of this object.
138 const RefCountList_t &clients() const { return _clientList; }
139 /// List of all value clients of this object. Value clients receive value updates.
141 /// List of all shape clients of this object. Shape clients receive property information such as
142 /// changes of a value range.
144
145 /// List of all servers of this object.
146 const RefCountList_t &servers() const { return _serverList; }
147 /// Return server of `this` with name `name`. Returns nullptr if not found.
148 inline RooAbsArg *findServer(const char *name) const
149 {
150 const auto serverIt = _serverList.findByName(name);
151 return serverIt != _serverList.end() ? *serverIt : nullptr;
152 }
153 /// Return server of `this` that has the same name as `arg`. Returns `nullptr` if not found.
154 inline RooAbsArg *findServer(const RooAbsArg &arg) const { return _serverList.findByNamePointer(&arg); }
155 /// Return i-th server from server list.
156 inline RooAbsArg *findServer(Int_t index) const { return _serverList.containedObjects()[index]; }
157 /// Check if `this` is serving values to `arg`.
158 inline bool isValueServer(const RooAbsArg &arg) const { return _clientListValue.containsByNamePtr(&arg); }
159 /// Check if `this` is serving values to an object with name `name`.
160 inline bool isValueServer(const char *name) const { return _clientListValue.containsSameName(name); }
161 /// Check if `this` is serving shape to `arg`.
162 inline bool isShapeServer(const RooAbsArg &arg) const { return _clientListShape.containsByNamePtr(&arg); }
163 /// Check if `this` is serving shape to an object with name `name`.
164 inline bool isShapeServer(const char *name) const { return _clientListShape.containsSameName(name); }
165 void
166 leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg = nullptr, bool recurseNonDerived = false) const;
167 void
168 branchNodeServerList(RooAbsCollection *list, const RooAbsArg *arg = nullptr, bool recurseNonDerived = false) const;
169 void treeNodeServerList(RooAbsCollection *list, const RooAbsArg *arg = nullptr, bool doBranch = true,
170 bool doLeaf = true, bool valueOnly = false, bool recurseNonDerived = false) const;
171
172 /// Is this object a fundamental type that can be added to a dataset?
173 /// Fundamental-type subclasses override this method to return true.
174 /// Note that this test is subtlely different from the dynamic isDerived()
175 /// test, e.g. a constant is not derived but is also not fundamental.
176 inline virtual bool isFundamental() const { return false; }
177
178 /// Create a fundamental-type object that stores our type of value. The
179 /// created object will have a valid value, but not necessarily the same
180 /// as our value. The caller is responsible for deleting the returned object.
181 virtual RooFit::OwningPtr<RooAbsArg> createFundamental(const char *newname = nullptr) const = 0;
182
183 /// Is this argument an l-value, i.e., can it appear on the left-hand side
184 /// of an assignment expression? LValues are also special since they can
185 /// potentially be analytically integrated and generated.
186 inline virtual bool isLValue() const { return false; }
187
188 // Server redirection interface
189 bool redirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll = false, bool nameChange = false,
190 bool isRecursionStep = false);
191 bool redirectServers(std::unordered_map<RooAbsArg *, RooAbsArg *> const &replacements);
192 bool recursiveRedirectServers(const RooAbsCollection &newSet, bool mustReplaceAll = false,
193 bool nameChange = false, bool recurseInNewSet = true);
194
195 virtual bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange,
196 bool isRecursiveStep);
197
198 virtual void serverNameChangeHook(const RooAbsArg * /*oldServer*/, const RooAbsArg * /*newServer*/) {};
199
200 void addServer(RooAbsArg &server, bool valueProp = true, bool shapeProp = false, std::size_t refCount = 1);
201 void addServerList(RooAbsCollection &serverList, bool valueProp = true, bool shapeProp = false);
202 void R__SUGGEST_ALTERNATIVE("This interface is unsafe! Use RooAbsArg::redirectServers()")
203 replaceServer(RooAbsArg &oldServer, RooAbsArg &newServer, bool valueProp, bool shapeProp);
204 void changeServer(RooAbsArg &server, bool valueProp, bool shapeProp);
205 void removeServer(RooAbsArg &server, bool force = false);
206 RooAbsArg *findNewServer(const RooAbsCollection &newSet, bool nameChange) const;
207
208 /// @}
209 ///////////////////////////////////////////////////////////////////////////////
210
211 // Parameter & observable interpretation of servers
212 RooFit::OwningPtr<RooArgSet> getVariables(bool stripDisconnected = true) const;
213 RooFit::OwningPtr<RooArgSet> getParameters(const RooAbsData *data, bool stripDisconnected = true) const;
214 RooFit::OwningPtr<RooArgSet> getParameters(const RooAbsData &data, bool stripDisconnected = true) const;
215 RooFit::OwningPtr<RooArgSet> getParameters(const RooArgSet &observables, bool stripDisconnected = true) const;
216 RooFit::OwningPtr<RooArgSet> getParameters(const RooArgSet *observables, bool stripDisconnected = true) const;
217 virtual bool getParameters(const RooArgSet *observables, RooArgSet &outputSet, bool stripDisconnected = true) const;
218 RooFit::OwningPtr<RooArgSet> getObservables(const RooArgSet &set, bool valueOnly = true) const;
219 RooFit::OwningPtr<RooArgSet> getObservables(const RooAbsData *data) const;
220 RooFit::OwningPtr<RooArgSet> getObservables(const RooAbsData &data) const;
221 RooFit::OwningPtr<RooArgSet> getObservables(const RooArgSet *depList, bool valueOnly = true) const;
222 bool getObservables(const RooAbsCollection *depList, RooArgSet &outputSet, bool valueOnly = true) const;
223 bool observableOverlaps(const RooAbsData *dset, const RooAbsArg &testArg) const;
224 bool observableOverlaps(const RooArgSet *depList, const RooAbsArg &testArg) const;
225 virtual bool checkObservables(const RooArgSet *nset) const;
226 bool recursiveCheckObservables(const RooArgSet *nset) const;
227 RooFit::OwningPtr<RooArgSet> getComponents() const;
228
229 void attachArgs(const RooAbsCollection &set);
230 void attachDataSet(const RooAbsData &set);
231 void attachDataStore(const RooAbsDataStore &set);
232
233 // I/O streaming interface (machine readable)
234 virtual bool readFromStream(std::istream &is, bool compact, bool verbose = false) = 0;
235 virtual void writeToStream(std::ostream &os, bool compact) const = 0;
236
237 /// Print the object to the defaultPrintStream().
238 /// \param[in] options **V** print verbose. **T** print a tree structure with all children.
239 void Print(Option_t *options = nullptr) const override
240 {
241 // Printing interface (human readable)
243 }
244
245 void printName(std::ostream &os) const override;
246 void printTitle(std::ostream &os) const override;
247 void printClassName(std::ostream &os) const override;
248 void printAddress(std::ostream &os) const override;
249 void printArgs(std::ostream &os) const override;
250 virtual void printMetaArgs(std::ostream & /*os*/) const {};
251 void printMultiline(std::ostream &os, Int_t contents, bool verbose = false, TString indent = "") const override;
252 void printTree(std::ostream &os, TString indent = "") const override;
253
254 Int_t defaultPrintContents(Option_t *opt) const override;
255
256 // Accessors to attributes
257 void setAttribute(const Text_t *name, bool value = true);
258 bool getAttribute(const Text_t *name) const;
259 inline const std::set<std::string> &attributes() const
260 {
261 // Returns set of names of boolean attributes defined
262 return _boolAttrib;
263 }
264
265 void setStringAttribute(const Text_t *key, const Text_t *value);
266 void removeStringAttribute(const Text_t *key);
267 const Text_t *getStringAttribute(const Text_t *key) const;
268 inline const std::map<std::string, std::string> &stringAttributes() const
269 {
270 // Returns std::map<string,string> with all string attributes defined
271 return _stringAttrib;
272 }
273
274 // Accessors to transient attributes
275 void setTransientAttribute(const Text_t *name, bool value = true);
276 bool getTransientAttribute(const Text_t *name) const;
277 inline const std::set<std::string> &transientAttributes() const
278 {
279 // Return set of transient boolean attributes
281 }
282
283 /// Check if the "Constant" attribute is set.
284 inline bool isConstant() const
285 {
286 return _isConstant; // getAttribute("Constant") ;
287 }
288
289 // Sorting
290 Int_t Compare(const TObject *other) const override;
291 bool IsSortable() const override
292 {
293 // Object is sortable in ROOT container class
294 return true;
295 }
296
297 virtual bool operator==(const RooAbsArg &other) const = 0;
298 virtual bool isIdentical(const RooAbsArg &other, bool assumeSameType = false) const = 0;
299
300 // Range management
301 virtual bool inRange(const char *) const
302 {
303 // Is value in range (dummy interface always returns true)
304 return true;
305 }
306 virtual bool hasRange(const char *) const
307 {
308 // Has this argument a defined range (dummy interface always returns false)
309 return false;
310 }
311
312 enum OperMode {
313 Auto = 0,
315 ADirty = 2
316 };
317
318 ////////////////////////////////////////////////////////////////////////////
319 /// \anchor optimisationInterface
320 /// \name Optimisation interface
321 /// These functions allow RooFit to optimise a computation graph, to keep track
322 /// of cached values, and to invalidate caches.
323 /// @{
324
325 // Cache mode optimization (tracks changes & do lazy evaluation vs evaluate always)
326 virtual void optimizeCacheMode(const RooArgSet &observables);
327 virtual void optimizeCacheMode(const RooArgSet &observables, RooArgSet &optNodes, RooLinkedList &processedNodes);
328
329 // Dirty state accessor
330 inline bool isShapeDirty() const
331 {
332 // Return true is shape has been invalidated by server value change
333 return isDerived() ? _shapeDirty : false;
334 }
335
336 inline bool isValueDirty() const
337 {
338 // Returns true of value has been invalidated by server value change
339 if (inhibitDirty())
340 return true;
341 switch (_operMode) {
342 case AClean: return false;
343 case ADirty: return true;
344 case Auto:
345 if (_valueDirty)
346 return isDerived();
347 return false;
348 }
349 return true; // we should never get here
350 }
351
352 inline bool isValueDirtyAndClear() const
353 {
354 // Returns true of value has been invalidated by server value change
355 if (inhibitDirty())
356 return true;
357 switch (_operMode) {
358 case AClean: return false;
359 case ADirty: return true;
360 case Auto:
361 if (_valueDirty) {
362 _valueDirty = false;
363 return isDerived();
364 }
365 return false;
366 }
367 return true; // But we should never get here
368 }
369
370 inline bool isValueOrShapeDirtyAndClear() const
371 {
372 // Returns true of value has been invalidated by server value change
373
374 if (inhibitDirty())
375 return true;
376 switch (_operMode) {
377 case AClean: return false;
378 case ADirty: return true;
379 case Auto:
380 if (_valueDirty || _shapeDirty) {
381 _shapeDirty = false;
382 _valueDirty = false;
383 return isDerived();
384 }
385 _shapeDirty = false;
386 _valueDirty = false;
387 return false;
388 }
389 return true; // But we should never get here
390 }
391
392 // Cache management
393 void registerCache(RooAbsCache &cache);
394 void unRegisterCache(RooAbsCache &cache);
395 Int_t numCaches() const;
397
398 /// Query the operation mode of this node.
399 inline OperMode operMode() const { return _operMode; }
400 /// Set the operation mode of this node.
401 void setOperMode(OperMode mode, bool recurseADirty = true);
402
403 // Dirty state modifiers
404 /// Mark the element dirty. This forces a re-evaluation when a value is requested.
406 {
407 if (_operMode == Auto && !inhibitDirty())
408 setValueDirty(nullptr);
409 }
410 /// Notify that a shape-like property (*e.g.* binning) has changed.
411 void setShapeDirty() { setShapeDirty(nullptr); }
412
413 const char *aggregateCacheUniqueSuffix() const;
414 virtual const char *cacheUniqueSuffix() const { return nullptr; }
415
416 void wireAllCaches();
417
420
421 /// Overwrite the current value stored in this object, making it look like this object computed that value.
422 // \param[in] value Value to store.
423 // \param[in] notifyClients Notify users of this object that they need to
424 /// recompute their values.
425 virtual void setCachedValue(double /*value*/, bool /*notifyClients*/ = true) {};
426
427 /// @}
428 ////////////////////////////////////////////////////////////////////////////
429
430 // Debug hooks
431 static void verboseDirty(bool flag);
432 void printDirty(bool depth = true) const;
433 static void setDirtyInhibit(bool flag);
434
435 void graphVizTree(const char *fileName, const char *delimiter = "\n", bool useTitle = false, bool useLatex = false);
436 void graphVizTree(std::ostream &os, const char *delimiter = "\n", bool useTitle = false, bool useLatex = false);
437
438 void printComponentTree(const char *indent = "", const char *namePat = nullptr, Int_t nLevel = 999);
439 void printCompactTree(const char *indent = "", const char *fileName = nullptr, const char *namePat = nullptr,
440 RooAbsArg *client = nullptr);
441 void printCompactTree(std::ostream &os, const char *indent = "", const char *namePat = nullptr,
442 RooAbsArg *client = nullptr);
443 virtual void printCompactTreeHook(std::ostream &os, const char *ind = "");
444
445 // We want to support three cases here:
446 // * passing a RooArgSet
447 // * passing a RooArgList
448 // * passing an initializer list
449 // Before, there was only an overload taking a RooArg set, which caused an
450 // implicit creation of a RooArgSet when a RooArgList was passed. This needs
451 // to be avoided, because if the passed RooArgList is owning the arguments,
452 // this information will be lost with the copy. The solution is to have one
453 // overload that takes a general RooAbsCollection, and one overload for
454 // RooArgList that is invoked in the case of passing an initializer list.
455 bool addOwnedComponents(const RooAbsCollection &comps);
457 bool addOwnedComponents(RooArgList &&comps);
458
459 // Transfer the ownership of one or more other RooAbsArgs to this RooAbsArg
460 // via a `std::unique_ptr`.
461 template <typename... Args_t>
462 bool addOwnedComponents(std::unique_ptr<Args_t>... comps)
463 {
464 return addOwnedComponents({*comps.release()...});
465 }
466 const RooArgSet *ownedComponents() const { return _ownedComponents; }
467
469
470 void setWorkspace(RooWorkspace &ws) { _myws = &ws; }
471 inline RooWorkspace *workspace() const { return _myws; }
472
474 Int_t numProxies() const;
475 void setProxyNormSet(const RooArgSet *nset);
476
477 /// De-duplicated pointer to this object's name.
478 /// This can be used for fast name comparisons.
479 /// like `if (namePtr() == other.namePtr())`.
480 /// \note TNamed::GetName() will return a pointer that's
481 /// different for each object, but namePtr() always points
482 /// to a unique instance.
483 inline const TNamed *namePtr() const { return _namePtr; }
484
485 void SetName(const char *name) override;
486 void SetNameTitle(const char *name, const char *title) override;
487
489 {
490 _myws = &ws;
491 return false;
492 };
493
494 virtual bool canComputeBatchWithCuda() const { return false; }
495 virtual bool isReducerNode() const { return false; }
496
497 virtual void applyWeightSquared(bool flag);
498
499 virtual std::unique_ptr<RooAbsArg>
501
502 virtual bool isCategory() const { return false; }
503
504protected:
505 void graphVizAddConnections(std::set<std::pair<RooAbsArg *, RooAbsArg *>> &);
506
507 virtual void operModeHook() {};
508
509 virtual void optimizeDirtyHook(const RooArgSet * /*obs*/) {};
510
511 virtual bool isValid() const;
512
513 virtual void
514 getParametersHook(const RooArgSet * /*nset*/, RooArgSet * /*list*/, bool /*stripDisconnected*/) const {};
515
517 {
518 _valueDirty = false;
519 _shapeDirty = false;
520 }
521
522 void clearValueDirty() const { _valueDirty = false; }
523 void clearShapeDirty() const { _shapeDirty = false; }
524
525 /// Force element to re-evaluate itself when a value is requested.
526 void setValueDirty(const RooAbsArg *source);
527 /// Notify that a shape-like property (*e.g.* binning) has changed.
528 void setShapeDirty(const RooAbsArg *source);
529
530 virtual void ioStreamerPass2();
531 static void ioStreamerPass2Finalize();
532
533private:
534 void addParameters(RooAbsCollection &params, const RooArgSet *nset = nullptr, bool stripDisconnected = true) const;
535
537
538protected:
539 friend class RooAbsReal;
540
541 // Client-Server relation and Proxy management
542 friend class RooAbsCollection;
543 friend class RooWorkspace;
544 friend class RooRealIntegral;
545 RefCountList_t _serverList; // list of server objects
546 RefCountList_t _clientList; // list of client objects
547 RefCountList_t _clientListShape; // subset of clients that requested shape dirty flag propagation
548 RefCountList_t _clientListValue; // subset of clients that requested value dirty flag propagation
549
550 RooRefArray _proxyList; // list of proxies
551
552 std::vector<RooAbsCache *> _cacheList; ///<! list of caches
553
554 // Proxy management
555 friend class RooArgProxy;
556 template <class RooCollection_t>
557 friend class RooCollectionProxy;
558 friend class RooHistPdf;
559 friend class RooHistFunc;
560 void registerProxy(RooArgProxy &proxy);
561 void registerProxy(RooSetProxy &proxy);
562 void registerProxy(RooListProxy &proxy);
563 void unRegisterProxy(RooArgProxy &proxy);
564 void unRegisterProxy(RooSetProxy &proxy);
565 void unRegisterProxy(RooListProxy &proxy);
566
567 // Attribute list
568 std::set<std::string> _boolAttrib; // Boolean attributes
569 std::map<std::string, std::string> _stringAttrib; // String attributes
570 std::set<std::string> _boolAttribTransient; ///<! Transient boolean attributes (not copied in ctor)
571
572 void printAttribList(std::ostream &os) const;
573
574 // Hooks for RooTreeData interface
576 friend class RooTreeDataStore;
577 friend class RooVectorDataStore;
578 friend class RooDataSet;
579 friend class RooRealMPFE;
580 virtual void syncCache(const RooArgSet *nset = nullptr) = 0;
581 virtual void copyCache(const RooAbsArg *source, bool valueOnly = false, bool setValDirty = true) = 0;
582
583 virtual void attachToTree(TTree &t, Int_t bufSize = 32000) = 0;
584 virtual void attachToVStore(RooVectorDataStore &vstore) = 0;
585 /// Attach this argument to the data store such that it reads data from there.
586 void attachToStore(RooAbsDataStore &store);
587
588 virtual void fillTreeBranch(TTree &t) = 0;
589 TString cleanBranchName() const;
590
591 // Global
592 friend std::ostream &operator<<(std::ostream &os, const RooAbsArg &arg);
593 friend std::istream &operator>>(std::istream &is, RooAbsArg &arg);
595
597 std::vector<RooAbsProxy *> cache;
598 bool isDirty = true;
599 };
600 ProxyListCache _proxyListCache; ///<! cache of the list of proxies. Avoids type casting.
601
602 // Debug stuff
603 static bool _verboseDirty; // Static flag controlling verbose messaging for dirty state changes
604 static bool _inhibitDirty; // Static flag controlling global inhibit of dirty state propagation
605 bool _deleteWatch = false; ///<! Delete watch flag
606
607 bool inhibitDirty() const;
608
609public:
610 void setLocalNoDirtyInhibit(bool flag) const { _localNoInhibitDirty = flag; }
612
613 /// Returns the token for retrieving results in the BatchMode. For internal use only.
614 std::size_t dataToken() const { return _dataToken; }
615 bool hasDataToken() const { return _dataToken != std::numeric_limits<std::size_t>::max(); }
616 void setDataToken(std::size_t index, RooFit::Evaluator *evaluator = nullptr);
618 {
619 _dataToken = std::numeric_limits<std::size_t>::max();
620 _evaluator = nullptr;
621 }
622
623protected:
624 mutable bool _valueDirty = true; // Flag set if value needs recalculating because input values modified
625 mutable bool _shapeDirty = true; // Flag set if value needs recalculating because input shapes modified
626
627 mutable OperMode _operMode = Auto; // Dirty state propagation mode
628 mutable bool _fast = false; // Allow fast access mode in getVal() and proxies
629
630 // Owned components
631 RooArgSet *_ownedComponents = nullptr; ///<! Set of owned component
632
633 mutable bool _prohibitServerRedirect = false; ///<! Prohibit server redirects -- Debugging tool
634
635 mutable RooExpensiveObjectCache *_eocache{nullptr}; ///<! Pointer to global cache manager for expensive components.
636
637 mutable const TNamed *_namePtr = nullptr; ///<! De-duplicated name pointer, equal for all objects with the same name.
638 bool _isConstant = false; ///<! Cached isConstant status
639
640 mutable bool _localNoInhibitDirty = false; ///<! Prevent 'AlwaysDirty' mode for this node
641
642 mutable RooWorkspace *_myws = nullptr; ///<! In which workspace do I live, if any
643
644 std::size_t _dataToken = std::numeric_limits<std::size_t>::max(); ///<! Set by the RooFitDriver for this arg to
645 ///<! retrieve its result in the run context
646 RooFit::Evaluator *_evaluator = nullptr; ///<! The Evaluator that set the data token and resets it in its destructor
647
648 /// \cond ROOFIT_INTERNAL
649 // Legacy streamers need the following statics:
650 friend class RooFitResult;
651
652public:
653 // Used internally for schema evolution.
654 static void addToIoEvoList(RooAbsArg *newObj, TRefArray const &onfileProxyList);
655 /// \endcond
656
657private:
658 void substituteServer(RooAbsArg *oldServer, RooAbsArg *newServer);
659 bool
660 callRedirectServersHook(RooAbsCollection const &newSet, bool mustReplaceAll, bool nameChange, bool isRecursionStep);
661
662 ClassDefOverride(RooAbsArg, 9) // Abstract variable
663};
664
665std::ostream &operator<<(std::ostream &os, const RooAbsArg &arg);
666std::istream &operator>>(std::istream &is, RooAbsArg &arg);
667
668#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:494
std::ostream & operator<<(std::ostream &os, const RooAbsArg &arg)
Ostream operator.
std::istream & operator>>(std::istream &is, RooAbsArg &arg)
Istream operator.
char Text_t
General string (char)
Definition RtypesCore.h:77
const char Option_t
Option string (const char)
Definition RtypesCore.h:81
#define ClassDefOverride(name, id)
Definition Rtypes.h:347
static void indent(ostringstream &buf, int indent_level)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char mode
char name[80]
Definition TGX11.cxx:142
Common abstract base class for objects that represent a value and a "shape" in RooFit.
Definition RooAbsArg.h:77
RooExpensiveObjectCache & expensiveObjectCache() const
void setLocalNoDirtyInhibit(bool flag) const
Definition RooAbsArg.h:610
bool overlaps(const RooAbsArg &testArg, bool valueOnly=false) const
Test if any of the nodes of tree are shared with that of the given tree.
RooRefArray _proxyList
Definition RooAbsArg.h:550
void replaceServer(RooAbsArg &oldServer, RooAbsArg &newServer, bool valueProp, bool shapeProp)
Replace 'oldServer' with 'newServer', specifying whether the new server has value or shape server pro...
bool _isConstant
! Cached isConstant status
Definition RooAbsArg.h:638
void clearValueAndShapeDirty() const
Definition RooAbsArg.h:516
void Print(Option_t *options=nullptr) const override
Print the object to the defaultPrintStream().
Definition RooAbsArg.h:239
virtual void copyCache(const RooAbsArg *source, bool valueOnly=false, bool setValDirty=true)=0
bool dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr, bool valueOnly=false) const
Test whether we depend on (ie, are served by) any object in the specified collection.
void attachToStore(RooAbsDataStore &store)
Attach this argument to the data store such that it reads data from there.
const TNamed * namePtr() const
De-duplicated pointer to this object's name.
Definition RooAbsArg.h:483
std::map< std::string, std::string > _stringAttrib
Definition RooAbsArg.h:569
const char * aggregateCacheUniqueSuffix() const
void printArgs(std::ostream &os) const override
Print object arguments, ie its proxies.
void printClassName(std::ostream &os) const override
Print object class name.
ProxyListCache _proxyListCache
! cache of the list of proxies. Avoids type casting.
Definition RooAbsArg.h:600
bool recursiveRedirectServers(const RooAbsCollection &newSet, bool mustReplaceAll=false, bool nameChange=false, bool recurseInNewSet=true)
Recursively replace all servers with the new servers in newSet.
RooWorkspace * _myws
! In which workspace do I live, if any
Definition RooAbsArg.h:642
~RooAbsArg() override
Destructor.
void resetDataToken()
Definition RooAbsArg.h:617
void attachDataStore(const RooAbsDataStore &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
bool addOwnedComponents(std::unique_ptr< Args_t >... comps)
Definition RooAbsArg.h:462
virtual bool operator==(const RooAbsArg &other) const =0
RooArgSet * _ownedComponents
! Set of owned component
Definition RooAbsArg.h:631
void printAddress(std::ostream &os) const override
Print address of this RooAbsArg.
void setShapeDirty()
Notify that a shape-like property (e.g. binning) has changed.
Definition RooAbsArg.h:411
virtual bool isCategory() const
Definition RooAbsArg.h:502
bool dependsOn(const RooAbsArg &server, const RooAbsArg *ignoreArg=nullptr, bool valueOnly=false) const
Test whether we depend on (ie, are served by) the specified object.
Definition RooAbsArg.h:123
virtual void setCachedValue(double, bool=true)
Overwrite the current value stored in this object, making it look like this object computed that valu...
Definition RooAbsArg.h:425
virtual void syncCache(const RooArgSet *nset=nullptr)=0
void registerProxy(RooArgProxy &proxy)
Register an RooArgProxy in the proxy list.
void setOperMode(OperMode mode, bool recurseADirty=true)
Set the operation mode of this node.
bool callRedirectServersHook(RooAbsCollection const &newSet, bool mustReplaceAll, bool nameChange, bool isRecursionStep)
Private helper function for RooAbsArg::redirectServers().
friend std::ostream & operator<<(std::ostream &os, const RooAbsArg &arg)
Ostream operator.
void setProhibitServerRedirect(bool flag)
Definition RooAbsArg.h:468
void attachArgs(const RooAbsCollection &set)
Bind this node to objects in set.
void setStringAttribute(const Text_t *key, const Text_t *value)
Associate string 'value' to this object under key 'key'.
bool isShapeServer(const RooAbsArg &arg) const
Check if this is serving shape to arg.
Definition RooAbsArg.h:162
bool isShapeDirty() const
Definition RooAbsArg.h:330
static void ioStreamerPass2Finalize()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
bool isValueDirtyAndClear() const
Definition RooAbsArg.h:352
bool isConstant() const
Check if the "Constant" attribute is set.
Definition RooAbsArg.h:284
bool _fast
Definition RooAbsArg.h:628
void setWorkspace(RooWorkspace &ws)
Definition RooAbsArg.h:470
virtual TObject * clone(const char *newname=nullptr) const =0
RooFit::OwningPtr< 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...
void addParameters(RooAbsCollection &params, const RooArgSet *nset=nullptr, bool stripDisconnected=true) const
Add all parameters of the function and its daughters to params.
const RooArgSet * ownedComponents() const
Definition RooAbsArg.h:466
void removeServer(RooAbsArg &server, bool force=false)
Unregister another RooAbsArg as a server to us, ie, declare that we no longer depend on its value and...
RooAbsArg & operator=(const RooAbsArg &other)=delete
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
void setTransientAttribute(const Text_t *name, bool value=true)
Set (default) or clear a named boolean attribute of this object.
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.
virtual bool canComputeBatchWithCuda() const
Definition RooAbsArg.h:494
bool _shapeDirty
Definition RooAbsArg.h:625
const RefCountList_t & shapeClients() const
List of all shape clients of this object.
Definition RooAbsArg.h:143
void SetName(const char *name) override
Set the name of the TNamed.
RooSTLRefCountList< RooAbsArg > RefCountList_t
Definition RooAbsArg.h:79
const RefCountList_t & valueClients() const
List of all value clients of this object. Value clients receive value updates.
Definition RooAbsArg.h:140
friend std::istream & operator>>(std::istream &is, RooAbsArg &arg)
Istream operator.
virtual void setExpensiveObjectCache(RooExpensiveObjectCache &cache)
Definition RooAbsArg.h:419
void setDataToken(std::size_t index, RooFit::Evaluator *evaluator=nullptr)
Sets the token for retrieving results in the BatchMode.
virtual bool hasRange(const char *) const
Definition RooAbsArg.h:306
std::set< std::string > _boolAttrib
Definition RooAbsArg.h:568
void unRegisterCache(RooAbsCache &cache)
Unregister a RooAbsCache. Called from the RooAbsCache destructor.
RefCountList_t _clientListValue
Definition RooAbsArg.h:548
bool addOwnedComponents(const RooAbsCollection &comps)
Take ownership of the contents of 'comps'.
void printAttribList(std::ostream &os) const
Print the attribute list.
void printTree(std::ostream &os, TString indent="") const override
Print object tree structure.
void SetNameTitle(const char *name, const char *title) override
Set all the TNamed parameters (name and title).
const Text_t * getStringAttribute(const Text_t *key) const
Get string attribute mapped under key 'key'.
static bool _verboseDirty
Definition RooAbsArg.h:603
bool _deleteWatch
! Delete watch flag
Definition RooAbsArg.h:605
void addServerList(RooAbsCollection &serverList, bool valueProp=true, bool shapeProp=false)
Register a list of RooAbsArg as servers to us by calling addServer() for each arg in the list.
virtual bool readFromStream(std::istream &is, bool compact, bool verbose=false)=0
bool dependsOnValue(const RooAbsArg &server, const RooAbsArg *ignoreArg=nullptr) const
Check whether this object depends on values served from the object passed as server.
Definition RooAbsArg.h:114
bool redirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool isRecursionStep=false)
Replace all direct servers of this object with the new servers in newServerList.
virtual bool 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:186
bool isValueServer(const char *name) const
Check if this is serving values to an object with name name.
Definition RooAbsArg.h:160
virtual RooFit::OwningPtr< RooAbsArg > createFundamental(const char *newname=nullptr) const =0
Create a fundamental-type object that stores our type of value.
static void setDirtyInhibit(bool flag)
Control global dirty inhibit mode.
virtual void serverNameChangeHook(const RooAbsArg *, const RooAbsArg *)
Definition RooAbsArg.h:198
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 ...
const std::set< std::string > & attributes() const
Definition RooAbsArg.h:259
bool isShapeServer(const char *name) const
Check if this is serving shape to an object with name name.
Definition RooAbsArg.h:164
const TNamed * _namePtr
! De-duplicated name pointer, equal for all objects with the same name.
Definition RooAbsArg.h:637
void printCompactTree(const char *indent="", const char *fileName=nullptr, const char *namePat=nullptr, RooAbsArg *client=nullptr)
Print tree structure of expression tree on stdout, or to file if filename is specified.
virtual std::unique_ptr< RooAbsArg > compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext &ctx) const
virtual void getParametersHook(const RooArgSet *, RooArgSet *, bool) const
Definition RooAbsArg.h:514
RooWorkspace * workspace() const
Definition RooAbsArg.h:471
void clearValueDirty() const
Definition RooAbsArg.h:522
virtual void ioStreamerPass2()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
RooFit::OwningPtr< RooArgSet > getComponents() const
Create a RooArgSet with all components (branch nodes) of the expression tree headed by this object.
void wireAllCaches()
virtual bool importWorkspaceHook(RooWorkspace &ws)
Definition RooAbsArg.h:488
bool _valueDirty
Definition RooAbsArg.h:624
bool _prohibitServerRedirect
! Prohibit server redirects – Debugging tool
Definition RooAbsArg.h:633
virtual const char * cacheUniqueSuffix() const
Definition RooAbsArg.h:414
RefCountListLegacyIterator_t * makeLegacyIterator(const RefCountList_t &list) const
const RefCountList_t & servers() const
List of all servers of this object.
Definition RooAbsArg.h:146
std::size_t _dataToken
! Set by the RooFitDriver for this arg to ! retrieve its result in the run context
Definition RooAbsArg.h:644
bool dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr) const
Check whether this object depends on values from an element in the serverList.
Definition RooAbsArg.h:105
void addServer(RooAbsArg &server, bool valueProp=true, bool shapeProp=false, std::size_t refCount=1)
Register another RooAbsArg as a server to us, ie, declare that we depend on it.
void removeStringAttribute(const Text_t *key)
Delete a string attribute with a given key.
Int_t Compare(const TObject *other) const override
Utility function used by TCollection::Sort to compare contained TObjects We implement comparison by n...
Int_t defaultPrintContents(Option_t *opt) const override
Define default contents to print.
virtual bool isDerived() const
Does value or shape of this arg depend on any other arg?
Definition RooAbsArg.h:98
virtual void attachToTree(TTree &t, Int_t bufSize=32000)=0
Overloadable function for derived classes to implement attachment as branch to a TTree.
void printComponentTree(const char *indent="", const char *namePat=nullptr, Int_t nLevel=999)
Print tree structure of expression tree on given ostream, only branch nodes are printed.
OperMode _operMode
Definition RooAbsArg.h:627
virtual bool isReducerNode() const
Definition RooAbsArg.h:495
void setValueDirty()
Mark the element dirty. This forces a re-evaluation when a value is requested.
Definition RooAbsArg.h:405
bool getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
bool isValueOrShapeDirtyAndClear() const
Definition RooAbsArg.h:370
bool hasDataToken() const
Definition RooAbsArg.h:615
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:154
static void verboseDirty(bool flag)
Activate verbose messaging related to dirty flag propagation.
virtual bool inRange(const char *) const
Definition RooAbsArg.h:301
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expression tree)
const std::map< std::string, std::string > & stringAttributes() const
Definition RooAbsArg.h:268
RooAbsCache * getCache(Int_t index) const
Return registered cache object by index.
virtual void writeToStream(std::ostream &os, bool compact) const =0
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Implement multi-line detailed printing.
virtual RooAbsArg * cloneTree(const char *newname=nullptr) const
Clone tree expression of objects.
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:547
virtual void attachToVStore(RooVectorDataStore &vstore)=0
TString cleanBranchName() const
Construct a mangled name from the actual name that is free of any math symbols that might be interpre...
bool inhibitDirty() const
bool 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...
void changeServer(RooAbsArg &server, bool valueProp, bool shapeProp)
Change dirty flag propagation mask for specified server.
RooAbsArg * findServer(Int_t index) const
Return i-th server from server list.
Definition RooAbsArg.h:156
Int_t numProxies() const
Return the number of registered proxies.
void printName(std::ostream &os) const override
Print object name.
bool hasClients() const
Definition RooAbsArg.h:129
const std::set< std::string > & transientAttributes() const
Definition RooAbsArg.h:277
const RefCountList_t & clients() const
List of all clients of this object.
Definition RooAbsArg.h:138
bool isValueDirty() const
Definition RooAbsArg.h:336
bool _localNoInhibitDirty
! Prevent 'AlwaysDirty' mode for this node
Definition RooAbsArg.h:640
virtual void printMetaArgs(std::ostream &) const
Definition RooAbsArg.h:250
virtual bool isIdentical(const RooAbsArg &other, bool assumeSameType=false) const =0
virtual void applyWeightSquared(bool flag)
Disables or enables the usage of squared weights.
static bool _inhibitDirty
Definition RooAbsArg.h:604
void setAttribute(const Text_t *name, bool value=true)
Set (default) or clear a named boolean attribute of this object.
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
std::size_t dataToken() const
Returns the token for retrieving results in the BatchMode. For internal use only.
Definition RooAbsArg.h:614
void branchNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all branch nodes of the arg tree starting with ourself as top node.
RefCountList_t _clientList
Definition RooAbsArg.h:546
void printDirty(bool depth=true) const
Print information about current value dirty state information.
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
Definition RooAbsArg.h:89
RefCountList_t _serverList
Definition RooAbsArg.h:545
void clearShapeDirty() const
Definition RooAbsArg.h:523
void leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
RooExpensiveObjectCache * _eocache
! Pointer to global cache manager for expensive components.
Definition RooAbsArg.h:635
virtual bool isFundamental() const
Is this object a fundamental type that can be added to a dataset? Fundamental-type subclasses overrid...
Definition RooAbsArg.h:176
virtual bool isValid() const
WVE (08/21/01) Probably obsolete now.
std::set< std::string > _boolAttribTransient
! Transient boolean attributes (not copied in ctor)
Definition RooAbsArg.h:570
friend class RooRealMPFE
Definition RooAbsArg.h:579
void printTitle(std::ostream &os) const override
Print object title.
virtual bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursiveStep)
Function that is called at the end of redirectServers().
virtual void fillTreeBranch(TTree &t)=0
std::vector< RooAbsCache * > _cacheList
! list of caches
Definition RooAbsArg.h:552
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.
void substituteServer(RooAbsArg *oldServer, RooAbsArg *newServer)
Private helper function for RooAbsArg::redirectServers().
bool getTransientAttribute(const Text_t *name) const
Check if a named attribute is set.
virtual void operModeHook()
Definition RooAbsArg.h:507
virtual void optimizeDirtyHook(const RooArgSet *)
Definition RooAbsArg.h:509
bool recursiveCheckObservables(const RooArgSet *nset) const
Recursively call checkObservables on all nodes in the expression tree.
RooFit::Evaluator * _evaluator
! The Evaluator that set the data token and resets it in its destructor
Definition RooAbsArg.h:646
bool isValueServer(const RooAbsArg &arg) const
Check if this is serving values to arg.
Definition RooAbsArg.h:158
bool localNoDirtyInhibit() const
Definition RooAbsArg.h:611
Int_t numCaches() const
Return number of registered caches.
virtual bool checkObservables(const RooArgSet *nset) const
Overloadable function in which derived classes can implement consistency checks of the variables.
RooAbsArg()
Default constructor.
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
TIteratorToSTLInterface< RefCountList_t::Container_t > RefCountListLegacyIterator_t
Definition RooAbsArg.h:80
RooAbsArg * findServer(const char *name) const
Return server of this with name name. Returns nullptr if not found.
Definition RooAbsArg.h:148
void treeNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool doBranch=true, bool doLeaf=true, bool valueOnly=false, bool recurseNonDerived=false) const
Fill supplied list with nodes of the arg tree, following all server links, starting with ourself as t...
bool IsSortable() const override
Definition RooAbsArg.h:291
RooAbsArg * findNewServer(const RooAbsCollection &newSet, bool nameChange) const
Find the new server in the specified set that matches the old server.
OperMode operMode() const
Query the operation mode of this node.
Definition RooAbsArg.h:399
Abstract base class for data members of RooAbsArgs that cache other (composite) RooAbsArg expressions...
Definition RooAbsCache.h:27
Abstract container object that can hold multiple RooAbsArg objects.
Abstract base class for a data collection.
Abstract base class for binned and unbinned datasets.
Definition RooAbsData.h:55
Abstract interface for proxy classes.
Definition RooAbsProxy.h:37
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:63
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
Abstract interface for RooAbsArg proxy classes.
Definition RooArgProxy.h:24
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:24
Concrete proxy for RooArgSet or RooArgList objects.
Combines several disjunct datasets into one.
Container class to hold unbinned data.
Definition RooDataSet.h:32
Singleton class that serves as repository for objects that are expensive to calculate.
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
Evaluates a RooAbsReal object in other ways than recursive graph traversal.
Definition Evaluator.h:38
A real-valued function sampled from a multidimensional histogram.
Definition RooHistFunc.h:29
A probability density function sampled from a multidimensional histogram.
Definition RooHistPdf.h:29
Collection class for internal use, storing a collection of RooAbsArg pointers in a doubly linked list...
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=nullptr)
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,...
Performs hybrid numerical/analytical integrals of RooAbsReal objects.
RooRefArray()=default
RooRefArray & operator=(const RooRefArray &other)=default
void Streamer(TBuffer &) override
Stream an object of class RooRefArray.
RooRefArray(const RooRefArray &other)
Definition RooAbsArg.h:64
TTree-backed data storage.
Uses std::vector to store data columns.
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.
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:42
An array of references to TObjects.
Definition TRefArray.h:33
Basic string class.
Definition TString.h:137
A TTree represents a columnar dataset.
Definition TTree.h:95
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition CodegenImpl.h:73
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
Definition Config.h:35
std::vector< RooAbsProxy * > cache
Definition RooAbsArg.h:597