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 "TObject.h"
20#include "TString.h"
21#include "RooAbsArg.h"
22#include "RooPrintable.h"
23#include "RooCmdArg.h"
24#include "RooLinkedListIter.h"
25#include "RooFit/UniqueId.h"
26
27// The range casts are not used in this file, but if you want to work with
28// RooFit collections you also want to have static_range_cast and
29// dynamic_range_cast available without including RangeCast.h every time.
30#include "ROOT/RRangeCast.hxx"
31
32#include "ROOT/RSpan.hxx"
33
34#include <string>
35#include <unordered_map>
36#include <vector>
37#include <type_traits>
38#include <memory>
39
40
41// To make ROOT::RangeStaticCast available under the name static_range_cast.
42template <typename T, typename Range_t>
44{
45 return ROOT::RangeStaticCast<T>(std::forward<Range_t>(coll));
46}
47
48
49// To make ROOT::RangeDynCast available under the dynamic_range_cast.
50template <typename T, typename Range_t>
52{
53 return ROOT::RangeDynCast<T>(std::forward<Range_t>(coll));
54}
55
56
57namespace RooFit {
58namespace Detail {
59struct HashAssistedFind;
60}
61}
62
63class RooAbsCollection : public TObject, public RooPrintable {
64public:
65 using Storage_t = std::vector<RooAbsArg*>;
66 using const_iterator = Storage_t::const_iterator;
67
68
69 // Constructors, assignment etc.
71 RooAbsCollection(const char *name);
72 virtual TObject* clone(const char* newname) const = 0 ;
73 virtual TObject* create(const char* newname) const = 0 ;
74 TObject* Clone(const char* newname=nullptr) const override {
75 return clone(newname?newname:GetName()) ;
76 }
77 ~RooAbsCollection() override;
78
79 // Create a copy of an existing list. New variables cannot be added
80 // to a copied list. The variables in the copied list are independent
81 // of the original variables.
82 RooAbsCollection(const RooAbsCollection& other, const char *name="");
84
85 void assign(const RooAbsCollection& other) const;
86 RooAbsCollection &assignValueOnly(const RooAbsCollection& other, bool forceIfSizeOne=false);
87 void assignFast(const RooAbsCollection& other, bool setValDirty=true) const;
88
89 // Move constructor
91
92 /// Returns a unique ID that is different for every instantiated
93 /// RooAbsCollection. This ID can be used to check whether two collections
94 /// are the same object, which is safer than memory address comparisons that
95 /// might result in false positives when memory is recycled.
97
98 // Copy list and contents (and optionally 'deep' servers)
99 RooAbsCollection *snapshot(bool deepCopy=true) const ;
100 bool snapshot(RooAbsCollection& output, bool deepCopy=true) const ;
101
102 /// Set the size at which the collection will automatically start using an extra
103 /// lookup table instead of performing a linear search.
104 void setHashTableSize(Int_t number) {
107 /// Query the size at which the collection will automatically start using an extra
108 /// lookup table instead of performing a linear search.
111 }
112
113 /// Const access to the underlying stl container.
114 Storage_t const& get() const { return _list; }
115
116 // List content management
117 virtual bool add(const RooAbsArg& var, bool silent=false) ;
118// The following function is not memory safe, because it takes ownership of var
119// without moving it. It is not publically available in the memory safe
120// interfaces mode.
121#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
122protected:
123#endif
124 virtual bool addOwned(RooAbsArg& var, bool silent=false);
125#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
126public:
127#endif
128 bool addOwned(std::unique_ptr<RooAbsArg> var, bool silent=false);
129 virtual RooAbsArg *addClone(const RooAbsArg& var, bool silent=false) ;
130 virtual bool replace(const RooAbsArg& var1, const RooAbsArg& var2) ;
131 virtual bool remove(const RooAbsArg& var, bool silent=false, bool matchByNameOnly=false) ;
132 virtual void removeAll() ;
133
134 template<typename Iterator_t,
135 typename value_type = typename std::remove_pointer<typename std::iterator_traits<Iterator_t>::value_type>,
136 typename = std::enable_if<std::is_convertible<const value_type*, const RooAbsArg*>::value> >
137 bool add(Iterator_t beginIt, Iterator_t endIt, bool silent=false) {
138 bool result = false ;
139 _list.reserve(_list.size() + std::distance(beginIt, endIt));
140 for (auto it = beginIt; it != endIt; ++it) {
141 result |= add(**it,silent);
142 }
143 return result;
144 }
145 ////////////////////////////////////////////////////////////////////////////////
146 /// Add a collection of arguments to this collection by calling add()
147 /// for each element in the source collection
148 bool add(const RooAbsCollection& list, bool silent=false) {
149 return add(list._list.begin(), list._list.end(), silent);
150 }
151 virtual bool addOwned(const RooAbsCollection& list, bool silent=false);
152 bool addOwned(RooAbsCollection&& list, bool silent=false);
153 virtual void addClone(const RooAbsCollection& list, bool silent=false);
154 bool replace(const RooAbsCollection &other);
155 bool remove(const RooAbsCollection& list, bool silent=false, bool matchByNameOnly=false) ;
156 template<class forwardIt>
157 void remove(forwardIt rangeBegin, forwardIt rangeEnd, bool silent = false, bool matchByNameOnly = false) {
158 for (forwardIt it = rangeBegin; it != rangeEnd; ++it) {
159 static_assert(std::is_same<
160 typename std::iterator_traits<forwardIt>::value_type,
161 RooAbsArg*>::value, "Can only remove lists of RooAbsArg*.");
162 auto castedElm = static_cast<RooAbsArg*>(*it);
163 remove(*castedElm, silent, matchByNameOnly);
164 }
165 }
166
167 // Utilities functions when used as configuration object
168 double getRealValue(const char* name, double defVal=0.0, bool verbose=false) const ;
169 const char* getCatLabel(const char* name, const char* defVal="", bool verbose=false) const ;
170 Int_t getCatIndex(const char* name, Int_t defVal=0, bool verbose=false) const ;
171 const char* getStringValue(const char* name, const char* defVal="", bool verbose=false) const ;
172 bool setRealValue(const char* name, double newVal=0.0, bool verbose=false) ;
173 bool setCatLabel(const char* name, const char* newVal="", bool verbose=false) ;
174 bool setCatIndex(const char* name, Int_t newVal=0, bool verbose=false) ;
175 bool setStringValue(const char* name, const char* newVal="", bool verbose=false) ;
176
177 // Group operations on AbsArgs
178 void setAttribAll(const Text_t* name, bool value=true) ;
179
180 // List search methods
181 RooAbsArg *find(const char *name) const ;
182 RooAbsArg *find(const RooAbsArg&) const ;
183
184 /// Find object by name in the collection
185 TObject* FindObject(const char* name) const override { return find(name); }
186
187 /// Find object in the collection, Note: matching by object name, like the find() method
188 TObject* FindObject(const TObject* obj) const override { auto arg = dynamic_cast<const RooAbsArg*>(obj); return (arg) ? find(*arg) : nullptr; }
189
190 /// Check if collection contains an argument with the same name as var.
191 /// To check for a specific instance, use containsInstance().
192 bool contains(const RooAbsArg& var) const {
193 return find(var) != nullptr;
194 }
195 /// Check if this exact instance is in this collection.
196 virtual bool containsInstance(const RooAbsArg& var) const {
197 return std::find(_list.begin(), _list.end(), &var) != _list.end();
198 }
199 RooAbsCollection* selectByAttrib(const char* name, bool value) const ;
200 bool selectCommon(const RooAbsCollection& refColl, RooAbsCollection& outColl) const ;
201 RooAbsCollection* selectCommon(const RooAbsCollection& refColl) const ;
202 RooAbsCollection* selectByName(const char* nameList, bool verbose=false) const ;
203 bool equals(const RooAbsCollection& otherColl) const ;
204 bool hasSameLayout(const RooAbsCollection& other) const;
205
206 template<typename Iterator_t,
207 typename value_type = typename std::remove_pointer<typename std::iterator_traits<Iterator_t>::value_type>,
208 typename = std::enable_if<std::is_convertible<const value_type*, const RooAbsArg*>::value> >
209 bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const {
210 for (auto it = otherCollBegin; it != otherCollEnd; ++it) {
211 if (find(**it)) {
212 return true ;
213 }
214 }
215 return false ;
216 }
217
218 ////////////////////////////////////////////////////////////////////////////////
219 /// Check if this and other collection have common entries
220 bool overlaps(const RooAbsCollection& otherColl) const {
221 return overlaps(otherColl._list.begin(), otherColl._list.end());
222 }
223
224 /// TIterator-style iteration over contained elements.
225 /// \note These iterators are slow. Use begin() and end() or
226 /// range-based for loop instead.
227 inline TIterator* createIterator(bool dir = kIterForward) const
228 R__SUGGEST_ALTERNATIVE("begin(), end() and range-based for loops.") {
229 // Create and return an iterator over the elements in this collection
230 return new RooLinkedListIter(makeLegacyIterator(dir));
231 }
232
233 /// TIterator-style iteration over contained elements.
234 /// \note This iterator is slow. Use begin() and end() or range-based for loop instead.
236 R__SUGGEST_ALTERNATIVE("begin(), end() and range-based for loops.") {
238 }
239
240 /// One-time forward iterator.
241 /// \note Use begin() and end() or range-based for loop instead.
243 R__SUGGEST_ALTERNATIVE("begin(), end() and range-based for loops.") {
245 }
246
248 return _list.begin();
249 }
250
252 return _list.end();
253 }
254
255 Storage_t::const_reverse_iterator rbegin() const {
256 return _list.rbegin();
257 }
258
259 Storage_t::const_reverse_iterator rend() const {
260 return _list.rend();
261 }
262
263 Storage_t::size_type size() const {
264 return _list.size();
265 }
266
267 bool empty() const {
268 return _list.empty();
269 }
270
271 void reserve(Storage_t::size_type count) {
272 _list.reserve(count);
273 }
274
275 /// Clear contents. If the collection is owning, it will also delete the contents.
276 void clear() {
277 removeAll();
278 }
279
280 /// Return the number of elements in the collection
281 inline Int_t getSize() const R__SUGGEST_ALTERNATIVE("size() returns true size.") {
282 return _list.size();
283 }
284
285 inline RooAbsArg *first() const {
286 // Return the first element in this collection
287 // calling front on an empty container is undefined
288 return _list.empty() ? nullptr : _list.front();
289 }
290
291 RooAbsArg * operator[](Storage_t::size_type i) const {
292 return _list[i];
293 }
294
295
296 /// Returns index of given arg, or -1 if arg is not in the collection.
297 inline Int_t index(const RooAbsArg* arg) const {
298 auto item = std::find(_list.begin(), _list.end(), arg);
299 return item != _list.end() ? item - _list.begin() : -1;
300 }
301
302 /// Returns index of given arg, or -1 if arg is not in the collection.
303 inline Int_t index(const RooAbsArg& arg) const {
304 return index(&arg);
305 }
306
307 Int_t index(const char* name) const;
308
309 inline void Print(Option_t *options= nullptr) const override {
310 // Printing interface (human readable)
312 }
313 std::string contentsString() const ;
314
315
316 void printName(std::ostream& os) const override ;
317 void printTitle(std::ostream& os) const override ;
318 void printClassName(std::ostream& os) const override ;
319 void printValue(std::ostream& os) const override ;
320 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent="") const override ;
321
322 Int_t defaultPrintContents(Option_t* opt) const override ;
323
324 // Latex printing methods
325 void printLatex(const RooCmdArg& arg1=RooCmdArg(), const RooCmdArg& arg2=RooCmdArg(),
326 const RooCmdArg& arg3=RooCmdArg(), const RooCmdArg& arg4=RooCmdArg(),
327 const RooCmdArg& arg5=RooCmdArg(), const RooCmdArg& arg6=RooCmdArg(),
328 const RooCmdArg& arg7=RooCmdArg(), const RooCmdArg& arg8=RooCmdArg()) const ;
329 void printLatex(std::ostream& ofs, Int_t ncol, const char* option="NEYU", Int_t sigDigit=1,
330 const RooLinkedList& siblingLists=RooLinkedList(), const RooCmdArg* formatCmd=nullptr) const ;
331
332 void setName(const char *name) {
333 // Set name of collection
334 _name= name;
335 }
336 const char* GetName() const override {
337 // Return namer of collection
338 return _name.Data() ;
339 }
340 bool isOwning() const {
341 // Does collection own contents?
342 return _ownCont ;
343 }
344
345 bool allInRange(const char* rangeSpec) const ;
346
347 void dump() const ;
348
349 void releaseOwnership() { _ownCont = false ; }
350 void takeOwnership() { _ownCont = true ; }
351
352 void sort(bool reverse = false);
353 void sortTopologically();
354
355 void RecursiveRemove(TObject *obj) override;
356
357 void useHashMapForFind(bool flag) const;
358
359 // For use in the RooArgList/Set(std::vector<RooAbsArgPtrOrDouble> const&) constructor.
360 // Can be replaced with std::variant when C++17 is the minimum supported standard.
362 RooAbsArgPtrOrDouble(RooAbsArg & arg) : ptr{&arg}, hasPtr{true} {}
363 RooAbsArgPtrOrDouble(double x) : val{x}, hasPtr{false} {}
364
365 RooAbsArg * ptr = nullptr;
366 double val = 0.0;
367 bool hasPtr = false;
368 };
369
370protected:
371 Storage_t _list; ///< Actual object storage
373
374 bool _ownCont = false; ///< Flag to identify a list that owns its contents.
375 TString _name; ///< Our name.
376 bool _allRRV = true; ///< All contents are RRV
377
378 void deleteList() ;
379
380 // Support for snapshot method
381 bool addServerClonesToList(const RooAbsArg& var) ;
382
383 inline TNamed* structureTag() { if (_structureTag==nullptr) makeStructureTag() ; return _structureTag ; }
385
386 mutable TNamed* _structureTag{nullptr}; ///<! Structure tag
387 mutable TNamed* _typedStructureTag{nullptr}; ///<! Typed structure tag
388
389 inline void clearStructureTags() { _structureTag = nullptr ; _typedStructureTag = nullptr ; }
390
393
394 /// Determine whether it's possible to add a given RooAbsArg to the collection or not.
395 virtual bool canBeAdded(const RooAbsArg& arg, bool silent) const = 0;
396
397 template<class T>
398 static void assert_is_no_temporary(T &&) {
399 static_assert(!std::is_rvalue_reference<T&&>::value,
400 "A reference to a temporary RooAbsArg will be passed to a RooAbsCollection constructor! "
401 "This is not allowed, because the collection will not own the arguments. "
402 "Hence, the collection will contain dangling pointers when the temporary goes out of scope."
403 );
404 }
405
406private:
407 std::unique_ptr<LegacyIterator_t> makeLegacyIterator (bool forward = true) const;
408
410 mutable std::unique_ptr<HashAssistedFind> _hashAssistedFind; ///<!
411 std::size_t _sizeThresholdForMapSearch = 100; ///<!
412
413 void insert(RooAbsArg*);
414
416
417 ClassDefOverride(RooAbsCollection,3) // Collection of RooAbsArg objects
418};
419
420#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:527
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...
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition RooAbsArg.h:74
RooAbsCollection is an 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.
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.
void printLatex(const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg()) const
Output content of collection as LaTex table.
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.
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
RooFIter fwdIterator() const
One-time forward iterator.
bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const
bool _allRRV
All contents are RRV.
bool addServerClonesToList(const RooAbsArg &var)
Add clones of servers of given argument to end of list.
RooLinkedListIter iterator(bool dir=kIterForward) const
TIterator-style iteration over contained elements.
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
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.
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 ...
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.
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 RooAbsRealLValye 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.
std::unique_ptr< LegacyIterator_t > makeLegacyIterator(bool forward=true) const
Factory for legacy iterators.
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
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 * createIterator(bool dir=kIterForward) const
TIterator-style iteration over contained elements.
RooAbsArg * find(const char *name) const
Find object with given name in list.
Storage_t::const_iterator const_iterator
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition RooCmdArg.h:26
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
A wrapper around TIterator derivatives.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
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=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,...
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:380
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 Common.h:18
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()