30#ifndef roofit_roofitcore_RooFit_RooCollectionProxy_h
31#define roofit_roofitcore_RooFit_RooCollectionProxy_h
42template <
class RooCollection_t>
55 _owner->registerProxy(*
this);
63 template <
class Other_t>
65 R__SUGGEST_ALTERNATIVE(
"Copying a collection proxy and giving it a name different from the original proxy "
66 "doesn't make sense in the context of how this class is used. The copy constructor that "
67 "doesn't take a name as the first parameter should be preferred.")
73 _owner->registerProxy(*
this);
77 template <
class Other_t>
84 _owner->registerProxy(*
this);
89 template <
class Other_t>
97 RooCollection_t::setName(other.GetName());
104 RooCollection_t::add(other);
121 _owner->unRegisterProxy(*
this);
124 const char *
name()
const override {
return RooCollection_t::GetName(); }
128 bool add(
const RooAbsArg &var,
bool valueServer,
bool shapeServer,
bool silent);
143#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
147#ifdef ROOFIT_MEMORY_SAFE_INTERFACES
155 bool remove(
const RooAbsArg &var,
bool silent =
false,
bool matchByNameOnly =
false)
override;
162 for (
auto const &arg : list) {
163 result |=
remove(*arg, silent, matchByNameOnly);
170 void print(std::ostream &os,
bool addContents =
false)
const override;
175 RooCollection_t::operator=(other);
190 bool changePointer(std::unordered_map<RooAbsArg *, RooAbsArg *>
const &replacements)
override;
195 throw std::runtime_error(
196 "Attempt to add elements to a RooSetProxy or RooListProxy without owner!"
197 " Please avoid using the RooListProxy default constructor, which should only be used by IO.");
209template <
class RooCollection_t>
213 bool ret = RooCollection_t::add(var, silent);
225template <
class RooCollection_t>
229 bool ret = RooCollection_t::addOwned(var, silent);
241template <
class RooCollection_t>
245 RooAbsArg *
ret = RooCollection_t::addClone(var, silent);
257template <
class RooCollection_t>
260 bool ret = RooCollection_t::replace(var1, var2);
262 if (!RooCollection_t::isOwning())
272template <
class RooCollection_t>
275 bool ret = RooCollection_t::remove(var, silent, matchByNameOnly);
276 if (
ret && !RooCollection_t::isOwning()) {
286template <
class RooCollection_t>
289 if (!RooCollection_t::isOwning()) {
290 for (
auto const &arg : *
this) {
291 if (!RooCollection_t::isOwning()) {
292 _owner->removeServer(*arg);
297 RooCollection_t::removeAll();
304template <
class RooCollection_t>
306 bool factoryInitMode)
308 if (RooCollection_t::empty()) {
309 if (factoryInitMode) {
310 for (
const auto arg : newServerList) {
321 for (
auto const &arg : *
this) {
322 RooAbsArg *newArg = arg->findNewServer(newServerList, nameChange);
323 if (newArg && newArg !=
_owner)
324 error |= !RooCollection_t::replace(*arg, *newArg);
329template <
class RooCollection_t>
331 std::unordered_map<RooAbsArg *, RooAbsArg *>
const &replacements)
334 for (
auto const &arg : *
this) {
335 auto newArgFound = replacements.find(arg);
336 if (newArgFound != replacements.end()) {
337 error |= !RooCollection_t::replace(*arg, *newArgFound->second);
347template <
class RooCollection_t>
354 os <<
name() <<
"=(";
356 for (
auto const &arg : *
this) {
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
RooCollectionProxy< RooArgSet > RooSetProxy
#define ClassDefOverride(name, id)
Abstract container object that can hold multiple RooAbsArg objects.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
Concrete proxy for RooArgSet or RooArgList objects.
RooCollectionProxy & operator=(RooCollectionProxy &&other)=delete
void removeAll() override
Remove all argument inset using remove(const RooAbsArg&).
bool changePointer(const RooAbsCollection &newServerSet, bool nameChange=false, bool factoryInitMode=false) override
Process server change operation on owner.
bool defShapeServer() const
void print(std::ostream &os, bool addContents=false) const override
Printing name of proxy on ostream.
RooCollectionProxy & operator=(const RooCollection_t &other)
Assign values of arguments on other set to arguments in this set.
bool changePointer(std::unordered_map< RooAbsArg *, RooAbsArg * > const &replacements) override
void initializeAfterIOConstructor(RooAbsArg *owner, const Other_t &other)
Initializes this RooCollection proxy from another proxy.
bool addOwned(RooAbsArg &var, bool silent=false) override
Overloaded RooCollection_t::addOwned() method insert object into owning set and registers object as s...
RooCollectionProxy & operator=(RooCollectionProxy const &other)=delete
bool remove(const RooAbsCollection &list, bool silent=false, bool matchByNameOnly=false)
Remove each argument in the input list from our list using remove(const RooAbsArg&).
~RooCollectionProxy() override
bool add(const RooAbsArg &var, bool silent=false) override
Overloaded RooCollection_t::add() method inserts 'var' into set and registers 'var' as server to owne...
RooAbsArg * addClone(const RooAbsArg &var, bool silent=false) override
Overloaded RooCollection_t::addClone() method insert clone of object into owning set and registers cl...
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
RooCollectionProxy(const char *inName, RooAbsArg *owner, const Other_t &other)
Copy constructor.
const char * name() const override
bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false) override
Remove object 'var' from set and deregister 'var' as server to owner.
RooCollectionProxy(RooAbsArg *owner, const Other_t &other)
Copy constructor.
bool replace(const RooAbsArg &var1, const RooAbsArg &var2) override
Replace object 'var1' in set with 'var2'.
bool defValueServer() const
RooCollectionProxy(const char *inName, const char *, RooAbsArg *owner, bool defValueServer=true, bool defShapeServer=false)
Construct proxy with given name and description, with given owner The default value and shape dirty p...