Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooAbsCollection.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooAbsCollection.h,v 1.26 2007/08/09 19:55:47 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_COLLECTION
17#define ROO_ABS_COLLECTION
18
19#include <RooAbsArg.h>
20#include <RooCmdArg.h>
21#include <RooFit/UniqueId.h>
22#include <RooLinkedListIter.h>
23#include <RooPrintable.h>
24
25// The range casts are not used in this file, but if you want to work with
26// RooFit collections you also want to have static_range_cast and
27// dynamic_range_cast available without including RangeCast.h every time.
28#include <ROOT/RRangeCast.hxx>
29
30#include <ROOT/RSpan.hxx>
31
32#include <TClass.h>
33#include <TObject.h>
34#include <TString.h>
35
36#include <string>
37#include <unordered_map>
38#include <vector>
39#include <type_traits>
40#include <memory>
41
42
43// To make ROOT::RangeStaticCast available under the name static_range_cast.
44template <typename T, typename Range_t>
46{
47 return ROOT::RangeStaticCast<T>(std::forward<Range_t>(coll));
48}
49
50
51// To make ROOT::RangeDynCast available under the dynamic_range_cast.
52template <typename T, typename Range_t>
54{
55 return ROOT::RangeDynCast<T>(std::forward<Range_t>(coll));
56}
57
58
59namespace RooFit {
60namespace Detail {
61struct HashAssistedFind;
62}
63}
64
65class RooAbsCollection : public TObject, public RooPrintable {
66public:
67 using Storage_t = std::vector<RooAbsArg*>;
68 using const_iterator = Storage_t::const_iterator;
69
70
71 // Constructors, assignment etc.
73 RooAbsCollection(const char *name);
74 virtual TObject* clone(const char* newname) const = 0 ;
75 virtual TObject* create(const char* newname) const = 0 ;
76 TObject* Clone(const char* newname=nullptr) const override {
77 return clone(newname?newname:GetName()) ;
78 }
79 ~RooAbsCollection() override;
80
81 // Create a copy of an existing list. New variables cannot be added
82 // to a copied list. The variables in the copied list are independent
83 // of the original variables.
84 RooAbsCollection(const RooAbsCollection& other, const char *name="");
86
87 void assign(const RooAbsCollection& other) const;
88 RooAbsCollection &assignValueOnly(const RooAbsCollection& other, bool forceIfSizeOne=false);
89 void assignFast(const RooAbsCollection& other, bool setValDirty=true) const;
90
91 // Move constructor
93
94 /// Returns a unique ID that is different for every instantiated
95 /// RooAbsCollection. This ID can be used to check whether two collections
96 /// are the same object, which is safer than memory address comparisons that
97 /// might result in false positives when memory is recycled.
99
100 // Copy list and contents (and optionally 'deep' servers)
101 RooAbsCollection *snapshot(bool deepCopy=true) const ;
102 bool snapshot(RooAbsCollection& output, bool deepCopy=true) const ;
103
104 /// Set the size at which the collection will automatically start using an extra
105 /// lookup table instead of performing a linear search.
106 void setHashTableSize(Int_t number) {
108 }
109 /// Query the size at which the collection will automatically start using an extra
110 /// lookup table instead of performing a linear search.
113 }
114
115 /// Const access to the underlying stl container.
116 Storage_t const& get() const { return _list; }
117
118 // List content management
119 virtual bool add(const RooAbsArg& var, bool silent=false) ;
120// The following function is not memory safe, because it takes ownership of var
121// without moving it. It is not publicly available in the memory safe
122// interfaces mode.
123#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
124protected:
125#endif
126 virtual bool addOwned(RooAbsArg& var, bool silent=false);
127#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
128public:
129#endif
130 bool addOwned(std::unique_ptr<RooAbsArg> var, bool silent=false);
131 virtual RooAbsArg *addClone(const RooAbsArg& var, bool silent=false) ;
132 virtual bool replace(const RooAbsArg& var1, const RooAbsArg& var2) ;
133 bool replace(RooAbsArg* var1, std::unique_ptr<RooAbsArg> var2) ;
134 virtual bool remove(const RooAbsArg& var, bool silent=false, bool matchByNameOnly=false) ;
135 virtual void removeAll() ;
136
137 template<typename Iterator_t,
138 typename value_type = typename std::remove_pointer<typename std::iterator_traits<Iterator_t>::value_type>,
139 typename = std::enable_if<std::is_convertible<const value_type*, const RooAbsArg*>::value> >
140 bool add(Iterator_t beginIt, Iterator_t endIt, bool silent=false) {
141 bool result = false ;
142 _list.reserve(_list.size() + std::distance(beginIt, endIt));
143 for (auto it = beginIt; it != endIt; ++it) {
144 result |= add(**it,silent);
145 }
146 return result;
147 }
148 ////////////////////////////////////////////////////////////////////////////////
149 /// Add a collection of arguments to this collection by calling add()
150 /// for each element in the source collection
151 bool add(const RooAbsCollection& list, bool silent=false) {
152 return add(list._list.begin(), list._list.end(), silent);
153 }
154 /**
155 * \brief Adds elements of a given RooAbsCollection to the container if they match the specified type.
156 *
157 * This function iterates through the elements of the provided RooAbsCollection and checks if each element
158 * matches the specified type. If any element doesn't match the type, it throws an exception.
159 *
160 * \tparam Arg_t The type to match for elements in the collection. Must inherit from RooAbsArg.
161 * \param list The RooAbsCollection containing elements to be added.
162 * \param silent Forwarded to the non-typed add function. If true,
163 * suppresses error messages when adding elements, e.g. when
164 * the collection is a RooArgSet and the element is already in
165 * the set.
166 * \return Returns true if all elements could be added, else false.
167 *
168 * \throws std::invalid_argument if an element in the collection doesn't match the specified type.
169 */
170 template <class Arg_t>
171 bool addTyped(const RooAbsCollection &list, bool silent = false)
172 {
173 for (RooAbsArg *arg : list) {
174 if (!dynamic_cast<Arg_t *>(arg)) {
175 throwAddTypedException(Arg_t::Class(), arg);
176 }
177 }
178 return add(list, silent);
179 }
180 virtual bool addOwned(const RooAbsCollection& list, bool silent=false);
181 bool addOwned(RooAbsCollection&& list, bool silent=false);
182 virtual void addClone(const RooAbsCollection& list, bool silent=false);
183 bool replace(const RooAbsCollection &other);
184 bool remove(const RooAbsCollection& list, bool silent=false, bool matchByNameOnly=false) ;
185 template<class forwardIt>
186 void remove(forwardIt rangeBegin, forwardIt rangeEnd, bool silent = false, bool matchByNameOnly = false) {
187 for (forwardIt it = rangeBegin; it != rangeEnd; ++it) {
188 static_assert(std::is_same<
189 typename std::iterator_traits<forwardIt>::value_type,
190 RooAbsArg*>::value, "Can only remove lists of RooAbsArg*.");
191 auto castedElm = static_cast<RooAbsArg*>(*it);
192 remove(*castedElm, silent, matchByNameOnly);
193 }
194 }
195
196 // Utilities functions when used as configuration object
197 double getRealValue(const char* name, double defVal=0.0, bool verbose=false) const ;
198 const char* getCatLabel(const char* name, const char* defVal="", bool verbose=false) const ;
199 Int_t getCatIndex(const char* name, Int_t defVal=0, bool verbose=false) const ;
200 const char* getStringValue(const char* name, const char* defVal="", bool verbose=false) const ;
201 bool setRealValue(const char* name, double newVal=0.0, bool verbose=false) ;
202 bool setCatLabel(const char* name, const char* newVal="", bool verbose=false) ;
203 bool setCatIndex(const char* name, Int_t newVal=0, bool verbose=false) ;
204 bool setStringValue(const char* name, const char* newVal="", bool verbose=false) ;
205
206 // Group operations on AbsArgs
207 void setAttribAll(const Text_t* name, bool value=true) ;
208
209 // List search methods
210 RooAbsArg *find(const char *name) const ;
211 RooAbsArg *find(const RooAbsArg&) const ;
212
213 /// Find object by name in the collection
214 TObject* FindObject(const char* name) const override { return find(name); }
215
216 /// Find object in the collection, Note: matching by object name, like the find() method
217 TObject* FindObject(const TObject* obj) const override { auto arg = dynamic_cast<const RooAbsArg*>(obj); return (arg) ? find(*arg) : nullptr; }
218
219 /// Check if collection contains an argument with the same name as var.
220 /// To check for a specific instance, use containsInstance().
221 bool contains(const RooAbsArg& var) const {
222 return find(var) != nullptr;
223 }
224 /// Check if this exact instance is in this collection.
225 virtual bool containsInstance(const RooAbsArg& var) const {
226 return std::find(_list.begin(), _list.end(), &var) != _list.end();
227 }
228 RooAbsCollection* selectByAttrib(const char* name, bool value) const ;
229 bool selectCommon(const RooAbsCollection& refColl, RooAbsCollection& outColl) const ;
230 RooAbsCollection* selectCommon(const RooAbsCollection& refColl) const ;
231 RooAbsCollection* selectByName(const char* nameList, bool verbose=false) const ;
232 bool equals(const RooAbsCollection& otherColl) const ;
233 bool hasSameLayout(const RooAbsCollection& other) const;
234
235 template<typename Iterator_t,
236 typename value_type = typename std::remove_pointer<typename std::iterator_traits<Iterator_t>::value_type>,
237 typename = std::enable_if<std::is_convertible<const value_type*, const RooAbsArg*>::value> >
238 bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const {
239 for (auto it = otherCollBegin; it != otherCollEnd; ++it) {
240 if (find(**it)) {
241 return true ;
242 }
243 }
244 return false ;
245 }
246
247 ////////////////////////////////////////////////////////////////////////////////
248 /// Check if this and other collection have common entries
249 bool overlaps(const RooAbsCollection& otherColl) const {
250 return overlaps(otherColl._list.begin(), otherColl._list.end());
251 }
252
253 /// TIterator-style iteration over contained elements.
254 /// \note These iterators are slow. Use begin() and end() or
255 /// range-based for loop instead.
256 inline TIterator* createIterator(bool dir = kIterForward) const
257 R__DEPRECATED(6,34, "begin(), end() and range-based for loops.") {
258 // Create and return an iterator over the elements in this collection
259 return new RooLinkedListIter(makeLegacyIterator(dir));
260 }
261
262 /// TIterator-style iteration over contained elements.
263 /// \note This iterator is slow. Use begin() and end() or range-based for loop instead.
265 R__DEPRECATED(6,34, "begin(), end() and range-based for loops.") {
266 return RooLinkedListIter(makeLegacyIterator(dir));
267 }
268
269 /// One-time forward iterator.
270 /// \note Use begin() and end() or range-based for loop instead.
272 R__DEPRECATED(6,34, "begin(), end() and range-based for loops.") {
273 return RooFIter(makeLegacyIterator());
274 }
275
277 return _list.begin();
278 }
279
281 return _list.end();
282 }
283
284 Storage_t::const_reverse_iterator rbegin() const {
285 return _list.rbegin();
286 }
287
288 Storage_t::const_reverse_iterator rend() const {
289 return _list.rend();
290 }
291
292 Storage_t::size_type size() const {
293 return _list.size();
294 }
295
296 bool empty() const {
297 return _list.empty();
298 }
299
300 void reserve(Storage_t::size_type count) {
301 _list.reserve(count);
302 }
303
304 /// Clear contents. If the collection is owning, it will also delete the contents.
305 void clear() {
306 removeAll();
307 }
308
309 /// Return the number of elements in the collection
310 inline Int_t getSize() const R__SUGGEST_ALTERNATIVE("size() returns true size.") {
311 return _list.size();
312 }
313
314 inline RooAbsArg *first() const {
315 // Return the first element in this collection
316 // calling front on an empty container is undefined
317 return _list.empty() ? nullptr : _list.front();
318 }
319
320 RooAbsArg * operator[](Storage_t::size_type i) const {
321 return _list[i];
322 }
323
324
325 /// Returns index of given arg, or -1 if arg is not in the collection.
326 inline Int_t index(const RooAbsArg* arg) const {
327 auto item = std::find(_list.begin(), _list.end(), arg);
328 return item != _list.end() ? item - _list.begin() : -1;
329 }
330
331 /// Returns index of given arg, or -1 if arg is not in the collection.
332 inline Int_t index(const RooAbsArg& arg) const {
333 return index(&arg);
334 }
335
336 Int_t index(const char* name) const;
337
338 inline void Print(Option_t *options= nullptr) const override {
339 // Printing interface (human readable)
341 }
342 std::string contentsString() const ;
343
344
345 void printName(std::ostream& os) const override ;
346 void printTitle(std::ostream& os) const override ;
347 void printClassName(std::ostream& os) const override ;
348 void printValue(std::ostream& os) const override ;
349 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent="") const override ;
350
351 Int_t defaultPrintContents(Option_t* opt) const override ;
352
353 // Latex printing methods
354 void printLatex(const RooCmdArg& arg1={}, const RooCmdArg& arg2={},
355 const RooCmdArg& arg3={}, const RooCmdArg& arg4={},
356 const RooCmdArg& arg5={}, const RooCmdArg& arg6={},
357 const RooCmdArg& arg7={}, const RooCmdArg& arg8={}) const ;
358 void printLatex(std::ostream& ofs, Int_t ncol, const char* option="NEYU", Int_t sigDigit=1,
359 const RooLinkedList& siblingLists=RooLinkedList(), const RooCmdArg* formatCmd=nullptr) const ;
360
361 void setName(const char *name) {
362 // Set name of collection
363 _name= name;
364 }
365 const char* GetName() const override {
366 // Return namer of collection
367 return _name.Data() ;
368 }
369 bool isOwning() const {
370 // Does collection own contents?
371 return _ownCont ;
372 }
373
374 bool allInRange(const char* rangeSpec) const ;
375
376 void dump() const ;
377
378 void releaseOwnership() { _ownCont = false ; }
379 void takeOwnership() { _ownCont = true ; }
380
381 void sort(bool reverse = false);
382 void sortTopologically();
383
384 void RecursiveRemove(TObject *obj) override;
385
386 void useHashMapForFind(bool flag) const;
387
388 // For use in the RooArgList/Set(std::vector<RooAbsArgPtrOrDouble> const&) constructor.
389 // Can be replaced with std::variant when C++17 is the minimum supported standard.
391 RooAbsArgPtrOrDouble(RooAbsArg & arg) : ptr{&arg}, hasPtr{true} {}
392 RooAbsArgPtrOrDouble(double x) : val{x}, hasPtr{false} {}
393
394 RooAbsArg * ptr = nullptr;
395 double val = 0.0;
396 bool hasPtr = false;
397 };
398
399protected:
400 Storage_t _list; ///< Actual object storage
402
403 bool _ownCont = false; ///< Flag to identify a list that owns its contents.
404 TString _name; ///< Our name.
405 bool _allRRV = true; ///< All contents are RRV
406
407 void deleteList() ;
408
409 inline TNamed* structureTag() { if (_structureTag==nullptr) makeStructureTag() ; return _structureTag ; }
411
412 mutable TNamed* _structureTag{nullptr}; ///<! Structure tag
413 mutable TNamed* _typedStructureTag{nullptr}; ///<! Typed structure tag
414
415 inline void clearStructureTags() { _structureTag = nullptr ; _typedStructureTag = nullptr ; }
416
419
420 /// Determine whether it's possible to add a given RooAbsArg to the collection or not.
421 virtual bool canBeAdded(const RooAbsArg& arg, bool silent) const = 0;
422
423 template<class T>
424 static void assert_is_no_temporary(T &&) {
425 static_assert(!std::is_rvalue_reference<T&&>::value,
426 "A reference to a temporary RooAbsArg will be passed to a RooAbsCollection constructor! "
427 "This is not allowed, because the collection will not own the arguments. "
428 "Hence, the collection will contain dangling pointers when the temporary goes out of scope."
429 );
430 }
431
432private:
433
434#if ROOT_VERSION_CODE < ROOT_VERSION(6, 34, 00)
435 // TODO: Remove this friend declaration and function in 6.34, where it's not
436 // needed anymore because the deprecated legacy iterators will be removed.
437 friend class RooWorkspace;
438 std::unique_ptr<LegacyIterator_t> makeLegacyIterator (bool forward = true) const;
439#else
440#error "Please remove this unneeded code."
441#endif
442
443 bool replaceImpl(const RooAbsArg& var1, const RooAbsArg& var2);
444
446 mutable std::unique_ptr<HashAssistedFind> _hashAssistedFind; ///<!
447 std::size_t _sizeThresholdForMapSearch = 100; ///<!
448
449 void insert(RooAbsArg*);
450
451 static void throwAddTypedException(TClass *klass, RooAbsArg *arg);
452
454
455 ClassDefOverride(RooAbsCollection,3) // Collection of RooAbsArg objects
456};
457
458#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:512
#define R__DEPRECATED(MAJOR, MINOR, REASON)
Definition RConfig.hxx:504
ROOT::RRangeCast< T, true, Range_t > dynamic_range_cast(Range_t &&coll)
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
char Text_t
Definition RtypesCore.h:62
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
static void indent(ostringstream &buf, int indent_level)
const Bool_t kIterForward
Definition TCollection.h:42
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
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
char name[80]
Definition TGX11.cxx:110
Wraps any collection that can be used in range-based loops and applies static_cast<T> or dynamic_cast...
Common abstract base class for objects that represent a value and a "shape" in RooFit.
Definition RooAbsArg.h:77
Abstract container object that can hold multiple RooAbsArg objects.
void remove(forwardIt rangeBegin, forwardIt rangeEnd, bool silent=false, bool matchByNameOnly=false)
RooAbsCollection * selectByAttrib(const char *name, bool value) const
Create a subset of the current collection, consisting only of those elements with the specified attri...
bool equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically-named contents.
RooFit::UniqueId< RooAbsCollection > const & uniqueId() const
Returns a unique ID that is different for every instantiated RooAbsCollection.
std::unique_ptr< HashAssistedFind > _hashAssistedFind
!
double getRealValue(const char *name, double defVal=0.0, bool verbose=false) const
Get value of a RooAbsReal stored in set with given name.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
void deleteList()
Delete contents of the list.
Int_t getCatIndex(const char *name, Int_t defVal=0, bool verbose=false) const
Get index value of a RooAbsCategory stored in set with given name.
std::vector< RooAbsArg * > Storage_t
TNamed * _typedStructureTag
! Typed structure tag
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
Storage_t const & get() const
Const access to the underlying stl container.
RooAbsCollection & assignValueOnly(const RooAbsCollection &other, bool forceIfSizeOne=false)
Sets the value of any argument in our set that also appears in the other set.
virtual TObject * create(const char *newname) const =0
Int_t defaultPrintContents(Option_t *opt) const override
Define default RooPrinable print options for given Print() flag string For inline printing only show ...
bool allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
void assignFast(const RooAbsCollection &other, bool setValDirty=true) const
Functional equivalent of assign() but assumes this and other collection have same layout.
void sortTopologically()
Sort collection topologically: the servers of any RooAbsArg will be before that RooAbsArg in the coll...
const char * getStringValue(const char *name, const char *defVal="", bool verbose=false) const
Get string value of a RooStringVar stored in set with given name.
TNamed * typedStructureTag()
bool contains(const RooAbsArg &var) const
Check if collection contains an argument with the same name as var.
virtual bool canBeAdded(const RooAbsArg &arg, bool silent) const =0
Determine whether it's possible to add a given RooAbsArg to the collection or not.
RooAbsCollection * snapshot(bool deepCopy=true) const
Take a snap shot of current collection contents.
RooAbsCollection()
Default constructor.
void printValue(std::ostream &os) const override
Print value of collection, i.e.
void printLatex(const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
Output content of collection as LaTex table.
Int_t getSize() const
Return the number of elements in the collection.
Storage_t::const_reverse_iterator rend() const
~RooAbsCollection() override
Destructor.
bool setStringValue(const char *name, const char *newVal="", bool verbose=false)
Set string value of a RooStringVar stored in set with given name to newVal.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
void setAttribAll(const Text_t *name, bool value=true)
Set given attribute in each element of the collection by calling each elements setAttribute() functio...
bool overlaps(const RooAbsCollection &otherColl) const
Check if this and other collection have common entries.
Storage_t::const_reverse_iterator rbegin() const
TObject * FindObject(const TObject *obj) const override
Find object in the collection, Note: matching by object name, like the find() method.
void printTitle(std::ostream &os) const override
Return collection title.
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
RooFIter fwdIterator() const R__DEPRECATED(6
One-time forward iterator.
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const
bool _allRRV
All contents are RRV.
const_iterator end() const
bool hasSameLayout(const RooAbsCollection &other) const
Check that all entries where the collections overlap have the same name.
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
TString _name
Our name.
Storage_t::size_type size() const
RooAbsArg * operator[](Storage_t::size_type i) const
TIterator begin()
RooAbsArg * first() const
static void assert_is_no_temporary(T &&)
virtual bool replace(const RooAbsArg &var1, const RooAbsArg &var2)
Replace var1 with var2 and return true for success.
bool add(const RooAbsCollection &list, bool silent=false)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
void reserve(Storage_t::size_type count)
bool setCatIndex(const char *name, Int_t newVal=0, bool verbose=false)
Set index value of a RooAbsCategoryLValue stored in set with given name to newVal.
void clear()
Clear contents. If the collection is owning, it will also delete the contents.
bool addTyped(const RooAbsCollection &list, bool silent=false)
Adds elements of a given RooAbsCollection to the container if they match the specified type.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Implement multiline printing of collection, one line for each contained object showing the requested ...
static void throwAddTypedException(TClass *klass, RooAbsArg *arg)
bool setCatLabel(const char *name, const char *newVal="", bool verbose=false)
Set state name of a RooAbsCategoryLValue stored in set with given name to newVal.
TIterator * createIterator(bool dir=kIterForward) const R__DEPRECATED(6
TIterator-style iteration over contained elements.
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
Storage_t _list
Actual object storage.
RooAbsCollection * selectByName(const char *nameList, bool verbose=false) const
Create a subset of the current collection, consisting only of those elements with names matching the ...
bool setRealValue(const char *name, double newVal=0.0, bool verbose=false)
Set value of a RooAbsRealLValue stored in set with given name to newVal No error messages are printed...
bool _ownCont
Flag to identify a list that owns its contents.
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
Int_t index(const RooAbsArg &arg) const
Returns index of given arg, or -1 if arg is not in the collection.
const_iterator begin() const
void printName(std::ostream &os) const override
Return collection name.
void sort(bool reverse=false)
Sort collection using std::sort and name comparison.
bool add(Iterator_t beginIt, Iterator_t endIt, bool silent=false)
std::size_t _sizeThresholdForMapSearch
!
void dump() const
Base contents dumper for debugging purposes.
const RooFit::UniqueId< RooAbsCollection > _uniqueId
bool selectCommon(const RooAbsCollection &refColl, RooAbsCollection &outColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
TObject * FindObject(const char *name) const override
Find object by name in the collection.
TNamed * _structureTag
! Structure tag
const char * getCatLabel(const char *name, const char *defVal="", bool verbose=false) const
Get state name of a RooAbsCategory stored in set with given name.
virtual bool containsInstance(const RooAbsArg &var) const
Check if this exact instance is in this collection.
void useHashMapForFind(bool flag) const
bool isOwning() const
bool replaceImpl(const RooAbsArg &var1, const RooAbsArg &var2)
void setHashTableSize(Int_t number)
Set the size at which the collection will automatically start using an extra lookup table instead of ...
std::string contentsString() const
Return comma separated list of contained object names as STL string.
void printClassName(std::ostream &os) const override
Return collection class name.
void setName(const char *name)
RooAbsCollection & operator=(const RooAbsCollection &other)
Assign values from the elements in other to our elements.
Int_t getHashTableSize() const
Query the size at which the collection will automatically start using an extra lookup table instead o...
virtual TObject * clone(const char *newname) const =0
void insert(RooAbsArg *)
Insert an element into the owned collections.
TIterator end() and range-based for loops.")
RooAbsArg * find(const char *name) const
Find object with given name in list.
Storage_t::const_iterator const_iterator
RooLinkedListIter iterator(bool dir=kIterForward) const R__DEPRECATED(6
TIterator-style iteration over contained elements.
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
Named container for two doubles, two integers two object points and three string pointers that can be...
Definition RooCmdArg.h:26
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
A wrapper around TIterator derivatives.
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,...
Persistable container for RooFit projects.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
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
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376
Double_t x[n]
Definition legend1.C:17
for(Int_t i=0;i< n;i++)
Definition legend1.C:18
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition JSONIO.h:26
Helper for hash-map-assisted finding of elements by name.
A UniqueId can be added as a class member to enhance any class with a unique identifier for each inst...
Definition UniqueId.h:39
static void output()