40 ClassImp(RooListProxy);
51 RooListProxy::RooListProxy(
const char* inName,
const char* , RooAbsArg* owner,
52 Bool_t defValueServer, Bool_t defShapeServer) :
53 RooArgList(inName), _owner(owner),
54 _defValueServer(defValueServer),
55 _defShapeServer(defShapeServer)
57 _owner->registerProxy(*
this) ;
66 RooListProxy::RooListProxy(
const char* inName, RooAbsArg* owner,
const RooListProxy& other) :
67 RooArgList(other,inName), _owner(owner),
68 _defValueServer(other._defValueServer),
69 _defShapeServer(other._defShapeServer)
71 _owner->registerProxy(*
this) ;
79 RooListProxy::~RooListProxy()
81 if (_owner) _owner->unRegisterProxy(*
this) ;
90 Bool_t RooListProxy::add(
const RooAbsArg& var, Bool_t valueServer, Bool_t shapeServer, Bool_t silent)
92 Bool_t ret=RooArgList::add(var,silent) ;
94 _owner->addServer((RooAbsArg&)var,valueServer,shapeServer) ;
104 Bool_t RooListProxy::add(
const RooAbsArg& var, Bool_t silent)
106 return add(var,_defValueServer,_defShapeServer,silent) ;
114 Bool_t RooListProxy::addOwned(RooAbsArg& var, Bool_t silent)
116 Bool_t ret=RooArgList::addOwned(var,silent) ;
118 _owner->addServer((RooAbsArg&)var,_defValueServer,_defShapeServer) ;
127 Bool_t RooListProxy::replace(
const RooAbsArg& var1,
const RooAbsArg& var2)
129 Bool_t ret=RooArgList::replace(var1,var2) ;
131 _owner->removeServer((RooAbsArg&)var1) ;
132 _owner->addServer((RooAbsArg&)var2,_owner->isValueServer(var1),
133 _owner->isShapeServer(var2)) ;
143 Bool_t RooListProxy::remove(
const RooAbsArg& var, Bool_t silent, Bool_t matchByNameOnly)
145 Bool_t ret=RooArgList::remove(var,silent,matchByNameOnly) ;
147 _owner->removeServer((RooAbsArg&)var) ;
157 void RooListProxy::removeAll()
159 RooFIter iter = fwdIterator();
161 while ((arg=(RooAbsArg*)iter.next())) {
162 _owner->removeServer(*arg) ;
165 RooArgList::removeAll() ;
174 RooListProxy& RooListProxy::operator=(
const RooArgList& other)
176 RooArgList::operator=(other) ;
188 Bool_t RooListProxy::changePointer(
const RooAbsCollection& newServerList, Bool_t nameChange, Bool_t factoryInitMode)
191 if (factoryInitMode) {
192 RooFIter iter = newServerList.fwdIterator() ;
194 while((arg=(RooAbsArg*)iter.next())) {
203 RooFIter iter = fwdIterator();
205 Bool_t error(kFALSE) ;
206 while ((arg=(RooAbsArg*)iter.next())) {
208 RooAbsArg* newArg= arg->findNewServer(newServerList, nameChange);
209 if (newArg && newArg!=_owner) error |= !RooArgList::replace(*arg,*newArg) ;
220 void RooListProxy::print(ostream& os, Bool_t addContents)
const
223 os << name() <<
"=" ; printStream(os,kValue,kInline) ;
225 os << name() <<
"=(" ;
226 RooFIter iter = fwdIterator() ;
228 Bool_t first2(kTRUE) ;
229 while ((arg=(RooAbsArg*)iter.next())) {
235 arg->printStream(os,kValue|kName,kInline) ;