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
254 return _list.begin();
255 }
256
258 return _list.end();
259 }
260
261 Storage_t::const_reverse_iterator rbegin() const {
262 return _list.rbegin();
263 }
264
265 Storage_t::const_reverse_iterator rend() const {
266 return _list.rend();
267 }
268
269 Storage_t::size_type size() const {
270 return _list.size();
271 }
272
273 bool empty() const {
274 return _list.empty();
275 }
276
277 void reserve(Storage_t::size_type count) {
278 _list.reserve(count);
279 }
280
281 /// Clear contents. If the collection is owning, it will also delete the contents.
282 void clear() {
283 removeAll();
284 }
285
286 /// Return the number of elements in the collection
287 inline Int_t getSize() const R__SUGGEST_ALTERNATIVE("size() returns true size.") {
288 return _list.size();
289 }
290
291 inline RooAbsArg *first() const {
292 // Return the first element in this collection
293 // calling front on an empty container is undefined
294 return _list.empty() ? nullptr : _list.front();
295 }
296
297 RooAbsArg * operator[](Storage_t::size_type i) const {
298 return _list[i];
299 }
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 auto item = std::find(_list.begin(), _list.end(), arg);
305 return item != _list.end() ? item - _list.begin() : -1;
306 }
307
308 /// Returns index of given arg, or -1 if arg is not in the collection.
309 inline Int_t index(const RooAbsArg& arg) const {
310 return index(&arg);
311 }
312
313 Int_t index(const char* name) const;
314
315 inline void Print(Option_t *options= nullptr) const override {
316 // Printing interface (human readable)
318 }
319 std::string contentsString() const ;
320
321
322 void printName(std::ostream& os) const override ;
323 void printTitle(std::ostream& os) const override ;
324 void printClassName(std::ostream& os) const override ;
325 void printValue(std::ostream& os) const override ;
326 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent="") const override ;
327
328 Int_t defaultPrintContents(Option_t* opt) const override ;
329
330 // Latex printing methods
331 void printLatex(const RooCmdArg& arg1={}, const RooCmdArg& arg2={},
332 const RooCmdArg& arg3={}, const RooCmdArg& arg4={},
333 const RooCmdArg& arg5={}, const RooCmdArg& arg6={},
334 const RooCmdArg& arg7={}, const RooCmdArg& arg8={}) const ;
335 void printLatex(std::ostream& ofs, Int_t ncol, const char* option="NEYU", Int_t sigDigit=1,
336 const RooLinkedList& siblingLists=RooLinkedList(), const RooCmdArg* formatCmd=nullptr) const ;
337
338 void setName(const char *name) {
339 // Set name of collection
340 _name= name;
341 }
342 const char* GetName() const override {
343 // Return namer of collection
344 return _name.Data() ;
345 }
346 bool isOwning() const {
347 // Does collection own contents?
348 return _ownCont ;
349 }
350
351 bool allInRange(const char* rangeSpec) const ;
352
353 void dump() const ;
354
355 void releaseOwnership() { _ownCont = false ; }
356 void takeOwnership() { _ownCont = true ; }
357
358 void sort(bool reverse = false);
359 void sortTopologically();
360
361 void RecursiveRemove(TObject *obj) override;
362
363 void useHashMapForFind(bool flag) const;
364
365 // For use in the RooArgList/Set(std::vector<RooAbsArgPtrOrDouble> const&) constructor.
366 // Can be replaced with std::variant when C++17 is the minimum supported standard.
368 RooAbsArgPtrOrDouble(RooAbsArg & arg) : ptr{&arg}, hasPtr{true} {}
369 RooAbsArgPtrOrDouble(double x) : val{x}, hasPtr{false} {}
370
371 RooAbsArg * ptr = nullptr;
372 double val = 0.0;
373 bool hasPtr = false;
374 };
375
376protected:
377 Storage_t _list; ///< Actual object storage
379
380 bool _ownCont = false; ///< Flag to identify a list that owns its contents.
381 TString _name; ///< Our name.
382 bool _allRRV = true; ///< All contents are RRV
383
384 void deleteList() ;
385
386 inline TNamed* structureTag() { if (_structureTag==nullptr) makeStructureTag() ; return _structureTag ; }
388
389 mutable TNamed* _structureTag{nullptr}; ///<! Structure tag
390 mutable TNamed* _typedStructureTag{nullptr}; ///<! Typed structure tag
391
392 inline void clearStructureTags() { _structureTag = nullptr ; _typedStructureTag = nullptr ; }
393
396
397 /// Determine whether it's possible to add a given RooAbsArg to the collection or not.
398 virtual bool canBeAdded(const RooAbsArg& arg, bool silent) const = 0;
399
400 template<class T>
401 static void assert_is_no_temporary(T &&) {
402 static_assert(!std::is_rvalue_reference<T&&>::value,
403 "A reference to a temporary RooAbsArg will be passed to a RooAbsCollection constructor! "
404 "This is not allowed, because the collection will not own the arguments. "
405 "Hence, the collection will contain dangling pointers when the temporary goes out of scope."
406 );
407 }
408
409private:
410
411 bool replaceImpl(const RooAbsArg& var1, const RooAbsArg& var2);
412
414 mutable HashAssistedFind *_hashAssistedFind = nullptr; ///<!
415 std::size_t _sizeThresholdForMapSearch = 100; ///<!
416
417 void insert(RooAbsArg*);
418
419 static void throwAddTypedException(TClass *klass, RooAbsArg *arg);
420
422
423 ClassDefOverride(RooAbsCollection,3) // Collection of RooAbsArg objects
424};
425
426#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:512
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:346
static void indent(ostringstream &buf, int indent_level)
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.
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.
HashAssistedFind * _hashAssistedFind
!
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.
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
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.
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.
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.
Named container for two doubles, two integers two object points and three string pointers that can be...
Definition RooCmdArg.h:26
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,...
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.
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
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()