ROOT logo
/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitCore                                                       *
 * @(#)root/roofitcore:$Id$
 * Authors:                                                                  *
 *   WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu       *
 *   DK, David Kirkby,    UC Irvine,         dkirkby@uci.edu                 *
 *                                                                           *
 * Copyright (c) 2000-2005, Regents of the University of California          *
 *                          and Stanford University. All rights reserved.    *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
// 
// BEGIN_HTML
// RooAbsCollection is an abstract container object that can hold
// multiple RooAbsArg objects.  Collections are ordered and can
// contain multiple objects of the same name, (but a derived
// implementation can enforce unique names). The storage of objects in
// implement through class RooLinkedList, a doubly linked list with an
// an optional hash-table lookup mechanism for fast indexing of large
// collections. 
// END_HTML
//
//

#include "RooFit.h"

#include "Riostream.h"
#include "Riostream.h"
#include <iomanip>
#include <fstream>
#include <vector>
#include <string>
#include "TClass.h"
#include "TStopwatch.h"
#include "TRegexp.h"
#include "RooAbsCollection.h"
#include "RooStreamParser.h"
#include "RooFormula.h"
#include "RooAbsRealLValue.h"
#include "RooAbsCategoryLValue.h"
#include "RooStringVar.h"
#include "RooTrace.h"
#include "RooArgList.h"
#include "RooLinkedListIter.h"
#include "RooCmdConfig.h"
#include "RooRealVar.h"
#include "RooGlobalFunc.h"
#include "RooMsgService.h"
#include <string>
#include <sstream>
using namespace std ;

#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3)
char* operator+( streampos&, char* );
#endif

ClassImp(RooAbsCollection)
  ;

//_____________________________________________________________________________
RooAbsCollection::RooAbsCollection() :
  _list(0),
  _ownCont(kFALSE), 
  _name(),
  _allRRV(kTRUE)
{
  // Default constructor
}



//_____________________________________________________________________________
RooAbsCollection::RooAbsCollection(const char *name) :
  _list(0),
  _ownCont(kFALSE), 
  _name(name),
  _allRRV(kTRUE)
{
  // Empty collection constructor
}



//_____________________________________________________________________________
RooAbsCollection::RooAbsCollection(const RooAbsCollection& other, const char *name) :
  TObject(other),
  RooPrintable(other),
  _list(other._list.getHashTableSize()) , 
  _ownCont(kFALSE), 
  _name(name),
  _allRRV(other._allRRV)
{
  // Copy constructor. Note that a copy of a collection is always non-owning,
  // even the source collection is owning. To create an owning copy of
  // a collection (owning or not), use the snaphot() method.

  RooTrace::create(this) ;
  if (!name) setName(other.GetName()) ;
  
  // Transfer contents (not owned)
  RooFIter iterat= other.fwdIterator();
  RooAbsArg *arg = 0;
  while((arg= iterat.next())) {
    add(*arg);
  }
}



//_____________________________________________________________________________
RooAbsCollection::~RooAbsCollection() 
{
  // Destructor

  // Delete all variables in our list if we own them
  if(_ownCont){ 
    safeDeleteList() ;
    //_list.Delete();
  }
}



//_____________________________________________________________________________
RooLinkedListIter RooAbsCollection::iterator(Bool_t dir) const 
{
    return _list.iterator(dir) ;
}

//_____________________________________________________________________________
void RooAbsCollection::safeDeleteList() 
{
  // Examine client server dependencies in list and
  // delete contents in safe order: any client
  // is deleted before a server is deleted

  // Handle trivial case here
  if (getSize()==1) {
    _list.Delete() ;
    return ;
  }
  
  RooAbsArg* arg ;
  Bool_t working = kTRUE ;

  while(working) {
    RooFIter iter = fwdIterator() ;
    working = kFALSE ;
    while((arg=iter.next())) {

      // Check if arg depends on remainder of list      
      if (!arg->dependsOn(*this,arg)) {
	// Otherwise leave it our and delete it	
	remove(*arg) ;
	delete arg ;
	working = kTRUE ;
      } 
    }
    if (_list.GetSize()<2) break ;
  }

  // Check if there are any remaining elements
  if (getSize()>1) {    
    coutW(ObjectHandling) << "RooAbsCollection::safeDeleteList(" << GetName() 
			  << ") WARNING: unable to delete following elements in client-server order " ;
    Print("1") ;
  }

  // Built-in delete remaining elements
  _list.Delete() ;
}



//_____________________________________________________________________________
RooAbsCollection* RooAbsCollection::snapshot(Bool_t deepCopy) const
{
  // Take a snap shot of current collection contents:
  // An owning collection is returned containing clones of 
  // 
  //     - Elements in this collection 
  //     - External dependents of all elements
  //       and recursively any dependents of those dependents
  //       (if deepCopy flag is set)
  //
  // If deepCopy is specified, the client-server links between the cloned
  // list elements and the cloned external dependents are reconnected to
  // each other, making the snapshot a completely self-contained entity.
  //
  //

  // First create empty list
  TString snapName ;
  if (TString(GetName()).Length()>0) {
    snapName.Append("Snapshot of ") ;
    snapName.Append(GetName()) ;
  }
  RooAbsCollection* output = (RooAbsCollection*) create(snapName.Data()) ;
  if (deepCopy || getSize()>1000) {
    output->setHashTableSize(1000) ;
  }
  Bool_t error = snapshot(*output,deepCopy) ;
  if (error) {
    delete output ;
    return 0 ;
  }
  output->setHashTableSize(0) ;
  return output ;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::snapshot(RooAbsCollection& output, Bool_t deepCopy) const 
{
  // Take a snap shot of current collection contents:
  // An owning collection is returned containing clones of 
  // 
  //     - Elements in this collection 
  //     - External dependents of all elements
  //       and recursively any dependents of those dependents
  //       (if deepCopy flag is set)
  //
  // If deepCopy is specified, the client-server links between the cloned
  // list elements and the cloned external dependents are reconnected to
  // each other, making the snapshot a completely self-contained entity.
  //
  //

  // Copy contents
  RooFIter iterat= fwdIterator();
  RooAbsArg *orig = 0;
  while((0 != (orig= iterat.next()))) {
    RooAbsArg *copy= (RooAbsArg*)orig->Clone();
    output.add(*copy);
  }

  RooFIter vIter = output.fwdIterator() ;
  RooAbsArg* var ;

  // Add external dependents
  Bool_t error(kFALSE) ;
  if (deepCopy) {
    // Recursively add clones of all servers
    while ((var=vIter.next())) {
      error |= output.addServerClonesToList(*var) ;
    }
  }

  // Handle eventual error conditions
  if (error) {
    coutE(ObjectHandling) << "RooAbsCollection::snapshot(): Errors occurred in deep clone process, snapshot not created" << endl ;
    output._ownCont = kTRUE ;    
    return kTRUE ;
  }

   // Redirect all server connections to internal list members
  vIter = output.fwdIterator() ;
  while ((var=vIter.next())) {
    var->redirectServers(output,deepCopy) ;
  }


  // Transfer ownership of contents to list
  output._ownCont = kTRUE ;
  return kFALSE ;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::addServerClonesToList(const RooAbsArg& var)
{
  // Add clones of servers of given argument to list

  Bool_t ret(kFALSE) ;

  RooFIter sIter = var.serverMIterator() ;
  RooAbsArg* server ;
  while ((server=sIter.next())) {
    RooAbsArg* tmp = find(*server) ;
    if (!tmp) {
      RooAbsArg* serverClone = (RooAbsArg*)server->Clone() ;      
      serverClone->setAttribute("SnapShot_ExtRefClone") ;
      _list.Add(serverClone) ;      
      if (_allRRV && dynamic_cast<RooRealVar*>(serverClone)==0) {
	_allRRV=kFALSE ;
      }
      ret |= addServerClonesToList(*server) ;
    } else {
    }
  }
  return ret ;
}



//_____________________________________________________________________________
RooAbsCollection &RooAbsCollection::operator=(const RooAbsCollection& other) 
{
  // The assignment operator sets the value of any argument in our set
  // that also appears in the other set.

  if (&other==this) return *this ;

  RooAbsArg *elem, *theirs ;
  RooFIter iter = _list.fwdIterator() ;
  while((elem=iter.next())) {
    theirs= other.find(*elem);
    if(!theirs) continue;
    theirs->syncCache() ;
    elem->copyCache(theirs) ;
   elem->setAttribute("Constant",theirs->isConstant()) ;
  }
  return *this;
}



//_____________________________________________________________________________
RooAbsCollection &RooAbsCollection::assignValueOnly(const RooAbsCollection& other, Bool_t oneSafe) 
{
  // The assignment operator sets the value of any argument in our set
  // that also appears in the other set.
  
  if (&other==this) return *this ;
  
  // Short cut for 1 element assignment
  if (getSize()==1 && getSize()==other.getSize() && oneSafe) {
    other.first()->syncCache() ;
    first()->copyCache(other.first(),kTRUE) ;
    return *this ;
  }

  RooAbsArg *elem, *theirs ;
  RooFIter iter = _list.fwdIterator() ;
  while((elem=iter.next())) {
    theirs= other.find(*elem);
    if(!theirs) continue;
    theirs->syncCache() ;
    elem->copyCache(theirs,kTRUE) ;
  }
  return *this;
}



//_____________________________________________________________________________
void RooAbsCollection::assignFast(const RooAbsCollection& other, Bool_t setValDirty) 
{
  // Functional equivalent of operator=() but assumes this and other collection
  // have same layout. Also no attributes are copied

  if (&other==this) return ;

  RooFIter iter = _list.fwdIterator(), iter2 = other._list.fwdIterator() ;
  
  if (_allRRV) {
    
    RooRealVar *elem, *theirs ;
    // All contents are know to be RooRealVars - fast version of assignment
    while((elem=(RooRealVar*)iter.next())) {      
      // Identical size of iterators is documented assumption of method
      // coverity[NULL_RETURNS]
      theirs= (RooRealVar*)iter2.next() ;      
      elem->copyCacheFast(*theirs,setValDirty) ;
    }


  } else {
    
    RooAbsArg *elem, *theirs ;
    while((elem=iter.next())) {
      
      // Identical size of iterators is documented assumption of method
      // coverity[NULL_RETURNS]
      theirs= iter2.next() ;
      
      theirs->syncCache() ;
      elem->copyCache(theirs,kTRUE,setValDirty) ;
    }

  }
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::addOwned(RooAbsArg& var, Bool_t silent) 
{
  // Add the specified argument to list. Returns kTRUE if successful, or
  // else kFALSE if a variable of the same name is already in the list.
  // This method can only be called on a list that is flagged as owning
  // all of its contents, or else on an empty list (which will force the
  // list into that mode).

  // check that we own our variables or else are empty
  if(!_ownCont && (getSize() > 0) && !silent) {
    coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::addOwned: can only add to an owned list" << endl;
    return kFALSE;
  }
  _ownCont= kTRUE;

  _list.Add((RooAbsArg*)&var);
  if (_allRRV && dynamic_cast<RooRealVar*>(&var)==0) {
    _allRRV=kFALSE ;
  }

  return kTRUE;
}



//_____________________________________________________________________________
RooAbsArg *RooAbsCollection::addClone(const RooAbsArg& var, Bool_t silent) 
{
  // Add a clone of the specified argument to list. Returns a pointer to
  // the clone if successful, or else zero if a variable of the same name
  // is already in the list or the list does *not* own its variables (in
  // this case, try add() instead.) Calling addClone() on an empty list
  // forces it to take ownership of all its subsequent variables.

  // check that we own our variables or else are empty
  if(!_ownCont && (getSize() > 0) && !silent) {
    coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::addClone: can only add to an owned list" << endl;
    return 0;
  }
  _ownCont= kTRUE;

  // add a pointer to a clone of this variable to our list (we now own it!)
  RooAbsArg *clone2= (RooAbsArg*)var.Clone();
  if(0 != clone2) _list.Add((RooAbsArg*)clone2);
  if (_allRRV && dynamic_cast<const RooRealVar*>(&var)==0) {
    _allRRV=kFALSE ;
  }

  return clone2;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::add(const RooAbsArg& var, Bool_t silent) 
{
  // Add the specified argument to list. Returns kTRUE if successful, or
  // else kFALSE if a variable of the same name is already in the list
  // or the list owns its variables (in this case, try addClone() or addOwned() instead).

  // check that this isn't a copy of a list
  if(_ownCont && !silent) {
    coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::add: cannot add to an owned list" << endl;
    return kFALSE;
  }

  // add a pointer to this variable to our list (we don't own it!)
  _list.Add((RooAbsArg*)&var);
  if (_allRRV && dynamic_cast<const RooRealVar*>(&var)==0) {
    _allRRV=kFALSE ;
  }
  return kTRUE;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::add(const RooAbsCollection& list, Bool_t silent)
{
  // Add a collection of arguments to this collection by calling add()
  // for each element in the source collection

  Bool_t result(false) ;

  Int_t n= list.getSize() ;
  for(Int_t index= 0; index < n; index++) {
    result |= add((RooAbsArg&)*list._list.At(index),silent) ;
  }

  return result;  
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::addOwned(const RooAbsCollection& list, Bool_t silent)
{
  // Add a collection of arguments to this collection by calling addOwned()
  // for each element in the source collection

  Bool_t result(false) ;

  Int_t n= list.getSize() ;
  for(Int_t index= 0; index < n; index++) {
    result |= addOwned((RooAbsArg&)*list._list.At(index),silent) ;
  }

  return result;  
}



//_____________________________________________________________________________
void RooAbsCollection::addClone(const RooAbsCollection& list, Bool_t silent)
{
  // Add a collection of arguments to this collection by calling addOwned()
  // for each element in the source collection

  Int_t n= list.getSize() ;
  for(Int_t index= 0; index < n; index++) {
    addClone((RooAbsArg&)*list._list.At(index),silent) ;
  }
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::replace(const RooAbsCollection &other) 
{
  // Replace any args in our set with args of the same name from the other set
  // and return kTRUE for success. Fails if this list is a copy of another.

  // check that this isn't a copy of a list
  if(_ownCont) {
    coutE(ObjectHandling) << "RooAbsCollection: cannot replace variables in a copied list" << endl;
    return kFALSE;
  }

  // loop over elements in the other list
  RooFIter otherArgs= other.fwdIterator();
  const RooAbsArg *arg = 0;
  while((arg= (const RooAbsArg*)otherArgs.next())) {

    // do we have an arg of the same name in our set?
    RooAbsArg *found= find(*arg);
    if(found) replace(*found,*arg);
  }
  return kTRUE;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::replace(const RooAbsArg& var1, const RooAbsArg& var2) 
{
  // Replace var1 with var2 and return kTRUE for success. Fails if
  // this list is a copy of another, if var1 is not already in this set,
  // or if var2 is already in this set. var1 and var2 do not need to have
  // the same name.

  // check that this isn't a copy of a list
  if(_ownCont) {
    coutE(ObjectHandling) << "RooAbsCollection: cannot replace variables in a copied list" << endl;
    return kFALSE;
  }

  // is var1 already in this list?
  const char *name= var1.GetName();

  Bool_t foundVar1(kFALSE) ;
  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    if (arg==&var1) foundVar1=kTRUE ;
  }
  if (!foundVar1) {
    coutE(ObjectHandling) << "RooAbsCollection: variable \"" << name << "\" is not in the list"
	 << " and cannot be replaced" << endl;
    return kFALSE;
  }

  RooAbsArg *other ;

  // is var2's name already in this list?
  if (dynamic_cast<RooArgSet*>(this)) {
    other= find(var2);
    if(other != 0 && other != &var1) {
      coutE(ObjectHandling) << "RooAbsCollection: cannot replace \"" << name
	   << "\" with already existing \"" << var2.GetName() << "\"" << endl;
      return kFALSE;
    }
  }

  // replace var1 with var2
  _list.Replace(&var1,&var2) ;
//   _list.AddBefore((RooAbsArg*)&var1,(RooAbsArg*)&var2);
//   _list.Remove((RooAbsArg*)&var1);

  if (_allRRV && dynamic_cast<const RooRealVar*>(&var2)==0) {
    _allRRV=kFALSE ;
  }

  return kTRUE;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::remove(const RooAbsArg& var, Bool_t , Bool_t matchByNameOnly) 
{
  // Remove the specified argument from our list. Return kFALSE if
  // the specified argument is not found in our list. An exact pointer
  // match is required, not just a match by name. A variable can be
  // removed from a copied list and will be deleted at the same time.

  // is var already in this list?
  TString name(var.GetName()) ;
  Bool_t anyFound(kFALSE) ;

  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    if ((&var)==arg) {
      _list.Remove(arg) ;
      anyFound=kTRUE ;
    } else if (matchByNameOnly) {
      //if (!name.CompareTo(arg->GetName())) {
      if (var.namePtr()==arg->namePtr()) {
	TObject* contObj = _list.FindObject(arg) ;	  
	_list.Remove(arg) ;
	anyFound=kTRUE ;
	if (_ownCont && contObj) {
	  //cout << "RooAbsCollection::remove() deleting instance " << contObj << " named " << contObj->GetName() << endl ;
	  delete contObj ;
	}
      }
    }
  }
  
  return anyFound ;
}



//_____________________________________________________________________________
Bool_t RooAbsCollection::remove(const RooAbsCollection& list, Bool_t silent, Bool_t matchByNameOnly) 
{
  // Remove each argument in the input list from our list using remove(const RooAbsArg&).
  // Return kFALSE in case of problems.

  Bool_t result(false) ;

  Int_t n= list.getSize() ;
  for(Int_t index= 0; index < n; index++) {
    result |= remove((RooAbsArg&)*list._list.At(index),silent,matchByNameOnly) ;
  }

  return result;
}



//_____________________________________________________________________________
void RooAbsCollection::removeAll() 
{
  // Remove all arguments from our set, deleting them if we own them.
  // This effectively restores our object to the state it would have
  // just after calling the RooAbsCollection(const char*) constructor.

  if(_ownCont) {
    safeDeleteList() ;
    _ownCont= kFALSE;
  }
  else {
    _list.Clear();
  }
}



//_____________________________________________________________________________
void RooAbsCollection::setAttribAll(const Text_t* name, Bool_t value) 
{
  // Set given attribute in each element of the collection by
  // calling each elements setAttribute() function.

  RooFIter iter= fwdIterator() ;
  RooAbsArg* arg ;
  while ((arg=iter.next())) {
    arg->setAttribute(name,value) ;
  }
}




//_____________________________________________________________________________
RooAbsCollection* RooAbsCollection::selectByAttrib(const char* name, Bool_t value) const
{
  // Create a subset of the current collection, consisting only of those
  // elements with the specified attribute set. The caller is responsibe
  // for deleting the returned collection

  TString selName(GetName()) ;
  selName.Append("_selection") ;
  RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ;
  
  // Scan set contents for matching attribute
  RooFIter iter= fwdIterator() ;
  RooAbsArg* arg ;
  while ((arg=iter.next())) {
    if (arg->getAttribute(name)==value)
      sel->add(*arg) ;
  }

  return sel ;
}




//_____________________________________________________________________________
RooAbsCollection* RooAbsCollection::selectCommon(const RooAbsCollection& refColl) const 
{
  // Create a subset of the current collection, consisting only of those
  // elements that are contained as well in the given reference collection.
  // The caller is responsible for deleting the returned collection

  // Create output set
  TString selName(GetName()) ;
  selName.Append("_selection") ;
  RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ; 

  // Scan set contents for matching attribute
  RooFIter iter= fwdIterator() ;
  RooAbsArg* arg ;
  while ((arg=iter.next())) {
    if (refColl.find(*arg))
      sel->add(*arg) ;
  }

  return sel ;
}



//_____________________________________________________________________________
RooAbsCollection* RooAbsCollection::selectByName(const char* nameList, Bool_t verbose) const 
{
  // Create a subset of the current collection, consisting only of those
  // elements with names matching the wildcard expressions in nameList,
  // supplied as a comma separated list

  // Create output set
  TString selName(GetName()) ;
  selName.Append("_selection") ;
  RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ; 

  const size_t bufSize = strlen(nameList) + 1;
  char* buf = new char[bufSize] ;
  strlcpy(buf,nameList,bufSize) ;
  char* wcExpr = strtok(buf,",") ;
  while(wcExpr) {
    TRegexp rexp(wcExpr,kTRUE) ;
    if (verbose) {
      cxcoutD(ObjectHandling) << "RooAbsCollection::selectByName(" << GetName() << ") processing expression '" << wcExpr << "'" << endl ;
    }

    RooFIter iter = fwdIterator() ;
    RooAbsArg* arg ;
    while((arg=iter.next())) {
      if (TString(arg->GetName()).Index(rexp)>=0) {
	if (verbose) {
	  cxcoutD(ObjectHandling) << "RooAbsCollection::selectByName(" << GetName() << ") selected element " << arg->GetName() << endl ;
	}
	sel->add(*arg) ;
      }
    }
    wcExpr = strtok(0,",") ;
  }
  delete[] buf ;

  return sel ;
}




//_____________________________________________________________________________
Bool_t RooAbsCollection::equals(const RooAbsCollection& otherColl) const
{
  // Check if this and other collection have identically named contents

  // First check equal length 
  if (getSize() != otherColl.getSize()) return kFALSE ;

  // Then check that each element of our list also occurs in the other list
  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    if (!otherColl.find(*arg)) {
      return kFALSE ;
    }
  }
  return kTRUE ;
}




//_____________________________________________________________________________
Bool_t RooAbsCollection::overlaps(const RooAbsCollection& otherColl) const 
{
  // Check if this and other collection have common entries

  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    if (otherColl.find(*arg)) {
      return kTRUE ;
    }
  }
  return kFALSE ;
}




//_____________________________________________________________________________
RooAbsArg *RooAbsCollection::find(const char *name) const 
{
  // Find object with given name in list. A null pointer 
  // is returned if no object with the given name is found

  return (RooAbsArg*) _list.find(name);
}



//_____________________________________________________________________________
RooAbsArg *RooAbsCollection::find(const RooAbsArg& arg) const 
{
  // Find object with given name in list. A null pointer 
  // is returned if no object with the given name is found

  return (RooAbsArg*) _list.findArg(&arg);
}



//_____________________________________________________________________________
string RooAbsCollection::contentsString() const 
{
  // Return comma separated list of contained object names as STL string

  string retVal ;
  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  Bool_t isFirst(kTRUE) ;
  while((arg=iter.next())) {
    if (isFirst) {
      isFirst=kFALSE ;
    } else {
      retVal += "," ;
    }
    retVal += arg->GetName() ;
  }
  return retVal ;
}



//_____________________________________________________________________________
void RooAbsCollection::printName(ostream& os) const 
{
  // Return collection name

  os << GetName() ;
}



//_____________________________________________________________________________
void RooAbsCollection::printTitle(ostream& os) const 
{
  // Return collection title

  os << GetTitle() ;
}



//_____________________________________________________________________________
void RooAbsCollection::printClassName(ostream& os) const 
{
  // Return collection class name

  os << IsA()->GetName() ;
}



//_____________________________________________________________________________
Int_t RooAbsCollection::defaultPrintContents(Option_t* opt) const 
{
  // Define default RooPrinable print options for given Print() flag string
  // For inline printing only show value of objects, for default print show
  // name,class name value and extras of each object. In verbose mode
  // also add object adress, argument and title
  
  if (opt && TString(opt)=="I") {
    return kValue ;
  }
  if (opt && TString(opt).Contains("v")) {
    return kAddress|kName|kArgs|kClassName|kValue|kTitle|kExtras ;
  }
  return kName|kClassName|kValue ;
}





//_____________________________________________________________________________
void RooAbsCollection::printValue(ostream& os) const
{
  // Print value of collection, i.e. a comma separated list of contained
  // object names

  Bool_t first2(kTRUE) ;
  os << "(" ;
  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    if (!first2) {
      os << "," ;
    } else {
      first2 = kFALSE ;
    }
    os << arg->GetName() ;
    
  }
  os << ")" ;  
}



//_____________________________________________________________________________
void RooAbsCollection::printMultiline(ostream&os, Int_t contents, Bool_t /*verbose*/, TString indent) const
{
  // Implement multiline printin of collection, one line for each ontained object showing
  // the requested content

  if (TString(GetName()).Length()>0 && (contents&kCollectionHeader)) {
    os << indent << ClassName() << "::" << GetName() << ":" << (_ownCont?" (Owning contents)":"") << endl;
  }

  RooFIter iterat= fwdIterator();
  int index= 0;
  RooAbsArg *next = 0;
  TString deeper(indent);
  deeper.Append("     ");
  
  // Adjust the with of the name field to fit the largest name, if requesed
  Int_t maxNameLen(1) ;
  Int_t nameFieldLengthSaved = RooPrintable::_nameLength ;
  if (nameFieldLengthSaved==0) {
    while((next=iterat.next())) {
      Int_t len = strlen(next->GetName()) ;
      if (len>maxNameLen) maxNameLen = len ;
    }
    iterat = fwdIterator() ;
    RooPrintable::nameFieldLength(maxNameLen+1) ;
  }
  
  while((0 != (next= iterat.next()))) {
    os << indent << setw(3) << ++index << ") ";
    next->printStream(os,contents,kSingleLine,"");
  }
  
  // Reset name field length, if modified
  RooPrintable::nameFieldLength(nameFieldLengthSaved) ;
}



//_____________________________________________________________________________
void RooAbsCollection::dump() const 
{
  // Base contents dumper for debugging purposes

  RooFIter iter = fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    cout << arg << " " << arg->IsA()->GetName() << "::" << arg->GetName() << " (" << arg->GetTitle() << ")" << endl ;
  }
}



//_____________________________________________________________________________
void RooAbsCollection::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. By default a table with two columns is created: the left
  // column contains the name of each variable, the right column the value.
  //
  // The following optional named arguments can be used to modify the default behavior
  //
  //   Columns(Int_t ncol)                    -- Fold table into multiple columns, i.e. ncol=3 will result in 3 x 2 = 6 total columns
  //   Sibling(const RooAbsCollection& other) -- Define sibling list. The sibling list is assumed to have objects with the same
  //                                             name in the same order. If this is not the case warnings will be printed. If a single
  //                                             sibling list is specified, 3 columns will be output: the (common) name, the value of this
  //                                             list and the value in the sibling list. Multiple sibling lists can be specified by 
  //                                             repeating the Sibling() command. 
  //   Format(const char* str)                -- Classic format string, provided for backward compatibility
  //   Format(...)                            -- Formatting arguments, details are given below
  //   OutputFile(const char* fname)          -- Send output to file with given name rather than standard output
  //
  // The Format(const char* what,...) has the following structure
  //
  //   const char* what          -- Controls what is shown. "N" adds name, "E" adds error, 
  //                                "A" shows asymmetric error, "U" shows unit, "H" hides the value
  //   FixedPrecision(int n)     -- Controls precision, set fixed number of digits
  //   AutoPrecision(int n)      -- Controls precision. Number of shown digits is calculated from error 
  //                                + n specified additional digits (1 is sensible default)
  //   VerbatimName(Bool_t flag) -- Put variable name in a \verb+   + clause.
  //
  // Example use: list.printLatex(Columns(2), Format("NEU",AutoPrecision(1),VerbatimName()) ) ;


  
  // Define configuration for this method
  RooCmdConfig pc("RooAbsCollection::printLatex()") ;
  pc.defineInt("ncol","Columns",0,1) ;
  pc.defineString("outputFile","OutputFile",0,"") ;
  pc.defineString("format","Format",0,"NEYVU") ;
  pc.defineInt("sigDigit","Format",0,1) ;
  pc.defineObject("siblings","Sibling",0,0,kTRUE) ;
  pc.defineInt("dummy","FormatArgs",0,0) ;
  pc.defineMutex("Format","FormatArgs") ;
 
  // Stuff all arguments in a list
  RooLinkedList cmdList;
  cmdList.Add(const_cast<RooCmdArg*>(&arg1)) ;  cmdList.Add(const_cast<RooCmdArg*>(&arg2)) ;
  cmdList.Add(const_cast<RooCmdArg*>(&arg3)) ;  cmdList.Add(const_cast<RooCmdArg*>(&arg4)) ;
  cmdList.Add(const_cast<RooCmdArg*>(&arg5)) ;  cmdList.Add(const_cast<RooCmdArg*>(&arg6)) ;
  cmdList.Add(const_cast<RooCmdArg*>(&arg7)) ;  cmdList.Add(const_cast<RooCmdArg*>(&arg8)) ;

  // Process & check varargs 
  pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
  if (!pc.ok(kTRUE)) {
    return ;
  }

  const char* outFile = pc.getString("outputFile") ;
  if (outFile && strlen(outFile)) {
    ofstream ofs(outFile) ;
    if (pc.hasProcessed("FormatArgs")) {
      RooCmdArg* formatCmd = static_cast<RooCmdArg*>(cmdList.FindObject("FormatArgs")) ;
      formatCmd->addArg(RooFit::LatexTableStyle()) ;
      printLatex(ofs,pc.getInt("ncol"),0,0,pc.getObjectList("siblings"),formatCmd) ;    
    } else {
      printLatex(ofs,pc.getInt("ncol"),pc.getString("format"),pc.getInt("sigDigit"),pc.getObjectList("siblings")) ;
    }
  } else {
    if (pc.hasProcessed("FormatArgs")) {
      RooCmdArg* formatCmd = static_cast<RooCmdArg*>(cmdList.FindObject("FormatArgs")) ;
      formatCmd->addArg(RooFit::LatexTableStyle()) ;
      printLatex(cout,pc.getInt("ncol"),0,0,pc.getObjectList("siblings"),formatCmd) ;    
    } else {
      printLatex(cout,pc.getInt("ncol"),pc.getString("format"),pc.getInt("sigDigit"),pc.getObjectList("siblings")) ;
    }
  }
}




//_____________________________________________________________________________
void RooAbsCollection::printLatex(ostream& ofs, Int_t ncol, const char* option, Int_t sigDigit, const RooLinkedList& siblingList, const RooCmdArg* formatCmd) const 
{
  // Internal implementation function of printLatex

  // Count number of rows to print
  Int_t nrow = (Int_t) (getSize() / ncol + 0.99) ;
  Int_t i,j,k ;

  // Sibling list do not need to print their name as it is supposed to be the same  
  TString sibOption ;
  RooCmdArg sibFormatCmd ;
  if (option) {
    sibOption = option ;
    sibOption.ReplaceAll("N","") ;
    sibOption.ReplaceAll("n","") ;
  } else {
    sibFormatCmd = *formatCmd ;
    TString tmp = formatCmd->_s[0] ;
    tmp.ReplaceAll("N","") ;    
    tmp.ReplaceAll("n","") ;    
    static char buf[100] ;
    strlcpy(buf,tmp.Data(),100) ;
    sibFormatCmd._s[0] = buf ;
  }


  // Make list of lists ;
  RooLinkedList listList ;
  listList.Add((RooAbsArg*)this) ;
  RooFIter sIter = siblingList.fwdIterator() ;
  RooAbsCollection* col ;
  while((col=(RooAbsCollection*)sIter.next())) {
    listList.Add(col) ;
  }

  RooLinkedList listListRRV ;

  // Make list of RRV-only components
  RooFIter lIter = listList.fwdIterator() ;
  RooArgList* prevList = 0 ;
  while((col=(RooAbsCollection*)lIter.next())) {
    RooArgList* list = new RooArgList ;
    RooFIter iter = col->fwdIterator() ;
    RooAbsArg* arg ;
    while((arg=iter.next())) {    
      
      RooRealVar* rrv = dynamic_cast<RooRealVar*>(arg) ;
      if (rrv) {
	list->add(*rrv) ;
      } else {
	coutW(InputArguments) << "RooAbsCollection::printLatex: can only print RooRealVar in LateX, skipping non-RooRealVar object named "
	     << arg->GetName() << endl ;      
      }
      if (prevList && TString(rrv->GetName()).CompareTo(prevList->at(list->getSize()-1)->GetName())) {
	coutW(InputArguments) << "RooAbsCollection::printLatex: WARNING: naming and/or ordering of sibling list is different" << endl ;
      }
    }
    listListRRV.Add(list) ;
    if (prevList && list->getSize() != prevList->getSize()) {
      coutW(InputArguments) << "RooAbsCollection::printLatex: ERROR: sibling list(s) must have same length as self" << endl ;
      delete list ;
      listListRRV.Delete() ;
      return ;
    }
    prevList = list ;
  }

  // Construct table header
  Int_t nlist = listListRRV.GetSize() ;
  TString subheader = "l" ;
  for (k=0 ; k<nlist ; k++) subheader += "c" ;

  TString header = "\\begin{tabular}{" ;
  for (j=0 ; j<ncol ; j++) {
    if (j>0) header += "|" ;
    header += subheader ;
  }
  header += "}" ;
  ofs << header << endl ;


  // Print contents, delegating actual printing to RooRealVar::format()
  for (i=0 ; i<nrow ; i++) {
    for (j=0 ; j<ncol ; j++) {
      for (k=0 ; k<nlist ; k++) {
	RooRealVar* par = (RooRealVar*) ((RooArgList*)listListRRV.At(k))->at(i+j*nrow) ;
	if (par) {
	  if (option) {
	    TString* tmp = par->format(sigDigit,(k==0)?option:sibOption.Data()) ;
	    ofs << *tmp ;
	    delete tmp ;
	  } else {
	    TString* tmp = par->format((k==0)?*formatCmd:sibFormatCmd) ;
	    ofs << *tmp ;
	    delete tmp ;
	  }
	}
	if (!(j==ncol-1 && k==nlist-1)) {
	  ofs << " & " ;
	}
      }
    }
    ofs << "\\\\" << endl ;
  }
  
  ofs << "\\end{tabular}" << endl ;
  listListRRV.Delete() ;
}




//_____________________________________________________________________________
Bool_t RooAbsCollection::allInRange(const char* rangeSpec) const
{
  // Return true if all contained object report to have their
  // value inside the specified range

  if (!rangeSpec) return kTRUE ;

  // Parse rangeSpec specification
  vector<string> cutVec ;
  if (rangeSpec && strlen(rangeSpec)>0) {
    if (strchr(rangeSpec,',')==0) {
      cutVec.push_back(rangeSpec) ;
    } else {
      const size_t bufSize = strlen(rangeSpec)+1;
      char* buf = new char[bufSize] ;
      strlcpy(buf,rangeSpec,bufSize) ;
      const char* oneRange = strtok(buf,",") ;
      while(oneRange) {
	cutVec.push_back(oneRange) ;
	oneRange = strtok(0,",") ;
      }
      delete[] buf ;
    }
  }


  RooFIter iter = _list.fwdIterator() ;

  // Apply range based selection criteria
  Bool_t selectByRange = kTRUE ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    Bool_t selectThisArg = kFALSE ;
    UInt_t icut ;
    for (icut=0 ; icut<cutVec.size() ; icut++) {
      if (arg->inRange(cutVec[icut].c_str())) {
	selectThisArg = kTRUE ;
	break ;
      }
    }
    if (!selectThisArg) {
      selectByRange = kFALSE ;
      break ;
    }
  }

  return selectByRange ;
}



//_____________________________________________________________________________
void RooAbsCollection::makeStructureTag() 
{
}


//_____________________________________________________________________________
void RooAbsCollection::makeTypedStructureTag() 
{
}





 RooAbsCollection.cxx:1
 RooAbsCollection.cxx:2
 RooAbsCollection.cxx:3
 RooAbsCollection.cxx:4
 RooAbsCollection.cxx:5
 RooAbsCollection.cxx:6
 RooAbsCollection.cxx:7
 RooAbsCollection.cxx:8
 RooAbsCollection.cxx:9
 RooAbsCollection.cxx:10
 RooAbsCollection.cxx:11
 RooAbsCollection.cxx:12
 RooAbsCollection.cxx:13
 RooAbsCollection.cxx:14
 RooAbsCollection.cxx:15
 RooAbsCollection.cxx:16
 RooAbsCollection.cxx:17
 RooAbsCollection.cxx:18
 RooAbsCollection.cxx:19
 RooAbsCollection.cxx:20
 RooAbsCollection.cxx:21
 RooAbsCollection.cxx:22
 RooAbsCollection.cxx:23
 RooAbsCollection.cxx:24
 RooAbsCollection.cxx:25
 RooAbsCollection.cxx:26
 RooAbsCollection.cxx:27
 RooAbsCollection.cxx:28
 RooAbsCollection.cxx:29
 RooAbsCollection.cxx:30
 RooAbsCollection.cxx:31
 RooAbsCollection.cxx:32
 RooAbsCollection.cxx:33
 RooAbsCollection.cxx:34
 RooAbsCollection.cxx:35
 RooAbsCollection.cxx:36
 RooAbsCollection.cxx:37
 RooAbsCollection.cxx:38
 RooAbsCollection.cxx:39
 RooAbsCollection.cxx:40
 RooAbsCollection.cxx:41
 RooAbsCollection.cxx:42
 RooAbsCollection.cxx:43
 RooAbsCollection.cxx:44
 RooAbsCollection.cxx:45
 RooAbsCollection.cxx:46
 RooAbsCollection.cxx:47
 RooAbsCollection.cxx:48
 RooAbsCollection.cxx:49
 RooAbsCollection.cxx:50
 RooAbsCollection.cxx:51
 RooAbsCollection.cxx:52
 RooAbsCollection.cxx:53
 RooAbsCollection.cxx:54
 RooAbsCollection.cxx:55
 RooAbsCollection.cxx:56
 RooAbsCollection.cxx:57
 RooAbsCollection.cxx:58
 RooAbsCollection.cxx:59
 RooAbsCollection.cxx:60
 RooAbsCollection.cxx:61
 RooAbsCollection.cxx:62
 RooAbsCollection.cxx:63
 RooAbsCollection.cxx:64
 RooAbsCollection.cxx:65
 RooAbsCollection.cxx:66
 RooAbsCollection.cxx:67
 RooAbsCollection.cxx:68
 RooAbsCollection.cxx:69
 RooAbsCollection.cxx:70
 RooAbsCollection.cxx:71
 RooAbsCollection.cxx:72
 RooAbsCollection.cxx:73
 RooAbsCollection.cxx:74
 RooAbsCollection.cxx:75
 RooAbsCollection.cxx:76
 RooAbsCollection.cxx:77
 RooAbsCollection.cxx:78
 RooAbsCollection.cxx:79
 RooAbsCollection.cxx:80
 RooAbsCollection.cxx:81
 RooAbsCollection.cxx:82
 RooAbsCollection.cxx:83
 RooAbsCollection.cxx:84
 RooAbsCollection.cxx:85
 RooAbsCollection.cxx:86
 RooAbsCollection.cxx:87
 RooAbsCollection.cxx:88
 RooAbsCollection.cxx:89
 RooAbsCollection.cxx:90
 RooAbsCollection.cxx:91
 RooAbsCollection.cxx:92
 RooAbsCollection.cxx:93
 RooAbsCollection.cxx:94
 RooAbsCollection.cxx:95
 RooAbsCollection.cxx:96
 RooAbsCollection.cxx:97
 RooAbsCollection.cxx:98
 RooAbsCollection.cxx:99
 RooAbsCollection.cxx:100
 RooAbsCollection.cxx:101
 RooAbsCollection.cxx:102
 RooAbsCollection.cxx:103
 RooAbsCollection.cxx:104
 RooAbsCollection.cxx:105
 RooAbsCollection.cxx:106
 RooAbsCollection.cxx:107
 RooAbsCollection.cxx:108
 RooAbsCollection.cxx:109
 RooAbsCollection.cxx:110
 RooAbsCollection.cxx:111
 RooAbsCollection.cxx:112
 RooAbsCollection.cxx:113
 RooAbsCollection.cxx:114
 RooAbsCollection.cxx:115
 RooAbsCollection.cxx:116
 RooAbsCollection.cxx:117
 RooAbsCollection.cxx:118
 RooAbsCollection.cxx:119
 RooAbsCollection.cxx:120
 RooAbsCollection.cxx:121
 RooAbsCollection.cxx:122
 RooAbsCollection.cxx:123
 RooAbsCollection.cxx:124
 RooAbsCollection.cxx:125
 RooAbsCollection.cxx:126
 RooAbsCollection.cxx:127
 RooAbsCollection.cxx:128
 RooAbsCollection.cxx:129
 RooAbsCollection.cxx:130
 RooAbsCollection.cxx:131
 RooAbsCollection.cxx:132
 RooAbsCollection.cxx:133
 RooAbsCollection.cxx:134
 RooAbsCollection.cxx:135
 RooAbsCollection.cxx:136
 RooAbsCollection.cxx:137
 RooAbsCollection.cxx:138
 RooAbsCollection.cxx:139
 RooAbsCollection.cxx:140
 RooAbsCollection.cxx:141
 RooAbsCollection.cxx:142
 RooAbsCollection.cxx:143
 RooAbsCollection.cxx:144
 RooAbsCollection.cxx:145
 RooAbsCollection.cxx:146
 RooAbsCollection.cxx:147
 RooAbsCollection.cxx:148
 RooAbsCollection.cxx:149
 RooAbsCollection.cxx:150
 RooAbsCollection.cxx:151
 RooAbsCollection.cxx:152
 RooAbsCollection.cxx:153
 RooAbsCollection.cxx:154
 RooAbsCollection.cxx:155
 RooAbsCollection.cxx:156
 RooAbsCollection.cxx:157
 RooAbsCollection.cxx:158
 RooAbsCollection.cxx:159
 RooAbsCollection.cxx:160
 RooAbsCollection.cxx:161
 RooAbsCollection.cxx:162
 RooAbsCollection.cxx:163
 RooAbsCollection.cxx:164
 RooAbsCollection.cxx:165
 RooAbsCollection.cxx:166
 RooAbsCollection.cxx:167
 RooAbsCollection.cxx:168
 RooAbsCollection.cxx:169
 RooAbsCollection.cxx:170
 RooAbsCollection.cxx:171
 RooAbsCollection.cxx:172
 RooAbsCollection.cxx:173
 RooAbsCollection.cxx:174
 RooAbsCollection.cxx:175
 RooAbsCollection.cxx:176
 RooAbsCollection.cxx:177
 RooAbsCollection.cxx:178
 RooAbsCollection.cxx:179
 RooAbsCollection.cxx:180
 RooAbsCollection.cxx:181
 RooAbsCollection.cxx:182
 RooAbsCollection.cxx:183
 RooAbsCollection.cxx:184
 RooAbsCollection.cxx:185
 RooAbsCollection.cxx:186
 RooAbsCollection.cxx:187
 RooAbsCollection.cxx:188
 RooAbsCollection.cxx:189
 RooAbsCollection.cxx:190
 RooAbsCollection.cxx:191
 RooAbsCollection.cxx:192
 RooAbsCollection.cxx:193
 RooAbsCollection.cxx:194
 RooAbsCollection.cxx:195
 RooAbsCollection.cxx:196
 RooAbsCollection.cxx:197
 RooAbsCollection.cxx:198
 RooAbsCollection.cxx:199
 RooAbsCollection.cxx:200
 RooAbsCollection.cxx:201
 RooAbsCollection.cxx:202
 RooAbsCollection.cxx:203
 RooAbsCollection.cxx:204
 RooAbsCollection.cxx:205
 RooAbsCollection.cxx:206
 RooAbsCollection.cxx:207
 RooAbsCollection.cxx:208
 RooAbsCollection.cxx:209
 RooAbsCollection.cxx:210
 RooAbsCollection.cxx:211
 RooAbsCollection.cxx:212
 RooAbsCollection.cxx:213
 RooAbsCollection.cxx:214
 RooAbsCollection.cxx:215
 RooAbsCollection.cxx:216
 RooAbsCollection.cxx:217
 RooAbsCollection.cxx:218
 RooAbsCollection.cxx:219
 RooAbsCollection.cxx:220
 RooAbsCollection.cxx:221
 RooAbsCollection.cxx:222
 RooAbsCollection.cxx:223
 RooAbsCollection.cxx:224
 RooAbsCollection.cxx:225
 RooAbsCollection.cxx:226
 RooAbsCollection.cxx:227
 RooAbsCollection.cxx:228
 RooAbsCollection.cxx:229
 RooAbsCollection.cxx:230
 RooAbsCollection.cxx:231
 RooAbsCollection.cxx:232
 RooAbsCollection.cxx:233
 RooAbsCollection.cxx:234
 RooAbsCollection.cxx:235
 RooAbsCollection.cxx:236
 RooAbsCollection.cxx:237
 RooAbsCollection.cxx:238
 RooAbsCollection.cxx:239
 RooAbsCollection.cxx:240
 RooAbsCollection.cxx:241
 RooAbsCollection.cxx:242
 RooAbsCollection.cxx:243
 RooAbsCollection.cxx:244
 RooAbsCollection.cxx:245
 RooAbsCollection.cxx:246
 RooAbsCollection.cxx:247
 RooAbsCollection.cxx:248
 RooAbsCollection.cxx:249
 RooAbsCollection.cxx:250
 RooAbsCollection.cxx:251
 RooAbsCollection.cxx:252
 RooAbsCollection.cxx:253
 RooAbsCollection.cxx:254
 RooAbsCollection.cxx:255
 RooAbsCollection.cxx:256
 RooAbsCollection.cxx:257
 RooAbsCollection.cxx:258
 RooAbsCollection.cxx:259
 RooAbsCollection.cxx:260
 RooAbsCollection.cxx:261
 RooAbsCollection.cxx:262
 RooAbsCollection.cxx:263
 RooAbsCollection.cxx:264
 RooAbsCollection.cxx:265
 RooAbsCollection.cxx:266
 RooAbsCollection.cxx:267
 RooAbsCollection.cxx:268
 RooAbsCollection.cxx:269
 RooAbsCollection.cxx:270
 RooAbsCollection.cxx:271
 RooAbsCollection.cxx:272
 RooAbsCollection.cxx:273
 RooAbsCollection.cxx:274
 RooAbsCollection.cxx:275
 RooAbsCollection.cxx:276
 RooAbsCollection.cxx:277
 RooAbsCollection.cxx:278
 RooAbsCollection.cxx:279
 RooAbsCollection.cxx:280
 RooAbsCollection.cxx:281
 RooAbsCollection.cxx:282
 RooAbsCollection.cxx:283
 RooAbsCollection.cxx:284
 RooAbsCollection.cxx:285
 RooAbsCollection.cxx:286
 RooAbsCollection.cxx:287
 RooAbsCollection.cxx:288
 RooAbsCollection.cxx:289
 RooAbsCollection.cxx:290
 RooAbsCollection.cxx:291
 RooAbsCollection.cxx:292
 RooAbsCollection.cxx:293
 RooAbsCollection.cxx:294
 RooAbsCollection.cxx:295
 RooAbsCollection.cxx:296
 RooAbsCollection.cxx:297
 RooAbsCollection.cxx:298
 RooAbsCollection.cxx:299
 RooAbsCollection.cxx:300
 RooAbsCollection.cxx:301
 RooAbsCollection.cxx:302
 RooAbsCollection.cxx:303
 RooAbsCollection.cxx:304
 RooAbsCollection.cxx:305
 RooAbsCollection.cxx:306
 RooAbsCollection.cxx:307
 RooAbsCollection.cxx:308
 RooAbsCollection.cxx:309
 RooAbsCollection.cxx:310
 RooAbsCollection.cxx:311
 RooAbsCollection.cxx:312
 RooAbsCollection.cxx:313
 RooAbsCollection.cxx:314
 RooAbsCollection.cxx:315
 RooAbsCollection.cxx:316
 RooAbsCollection.cxx:317
 RooAbsCollection.cxx:318
 RooAbsCollection.cxx:319
 RooAbsCollection.cxx:320
 RooAbsCollection.cxx:321
 RooAbsCollection.cxx:322
 RooAbsCollection.cxx:323
 RooAbsCollection.cxx:324
 RooAbsCollection.cxx:325
 RooAbsCollection.cxx:326
 RooAbsCollection.cxx:327
 RooAbsCollection.cxx:328
 RooAbsCollection.cxx:329
 RooAbsCollection.cxx:330
 RooAbsCollection.cxx:331
 RooAbsCollection.cxx:332
 RooAbsCollection.cxx:333
 RooAbsCollection.cxx:334
 RooAbsCollection.cxx:335
 RooAbsCollection.cxx:336
 RooAbsCollection.cxx:337
 RooAbsCollection.cxx:338
 RooAbsCollection.cxx:339
 RooAbsCollection.cxx:340
 RooAbsCollection.cxx:341
 RooAbsCollection.cxx:342
 RooAbsCollection.cxx:343
 RooAbsCollection.cxx:344
 RooAbsCollection.cxx:345
 RooAbsCollection.cxx:346
 RooAbsCollection.cxx:347
 RooAbsCollection.cxx:348
 RooAbsCollection.cxx:349
 RooAbsCollection.cxx:350
 RooAbsCollection.cxx:351
 RooAbsCollection.cxx:352
 RooAbsCollection.cxx:353
 RooAbsCollection.cxx:354
 RooAbsCollection.cxx:355
 RooAbsCollection.cxx:356
 RooAbsCollection.cxx:357
 RooAbsCollection.cxx:358
 RooAbsCollection.cxx:359
 RooAbsCollection.cxx:360
 RooAbsCollection.cxx:361
 RooAbsCollection.cxx:362
 RooAbsCollection.cxx:363
 RooAbsCollection.cxx:364
 RooAbsCollection.cxx:365
 RooAbsCollection.cxx:366
 RooAbsCollection.cxx:367
 RooAbsCollection.cxx:368
 RooAbsCollection.cxx:369
 RooAbsCollection.cxx:370
 RooAbsCollection.cxx:371
 RooAbsCollection.cxx:372
 RooAbsCollection.cxx:373
 RooAbsCollection.cxx:374
 RooAbsCollection.cxx:375
 RooAbsCollection.cxx:376
 RooAbsCollection.cxx:377
 RooAbsCollection.cxx:378
 RooAbsCollection.cxx:379
 RooAbsCollection.cxx:380
 RooAbsCollection.cxx:381
 RooAbsCollection.cxx:382
 RooAbsCollection.cxx:383
 RooAbsCollection.cxx:384
 RooAbsCollection.cxx:385
 RooAbsCollection.cxx:386
 RooAbsCollection.cxx:387
 RooAbsCollection.cxx:388
 RooAbsCollection.cxx:389
 RooAbsCollection.cxx:390
 RooAbsCollection.cxx:391
 RooAbsCollection.cxx:392
 RooAbsCollection.cxx:393
 RooAbsCollection.cxx:394
 RooAbsCollection.cxx:395
 RooAbsCollection.cxx:396
 RooAbsCollection.cxx:397
 RooAbsCollection.cxx:398
 RooAbsCollection.cxx:399
 RooAbsCollection.cxx:400
 RooAbsCollection.cxx:401
 RooAbsCollection.cxx:402
 RooAbsCollection.cxx:403
 RooAbsCollection.cxx:404
 RooAbsCollection.cxx:405
 RooAbsCollection.cxx:406
 RooAbsCollection.cxx:407
 RooAbsCollection.cxx:408
 RooAbsCollection.cxx:409
 RooAbsCollection.cxx:410
 RooAbsCollection.cxx:411
 RooAbsCollection.cxx:412
 RooAbsCollection.cxx:413
 RooAbsCollection.cxx:414
 RooAbsCollection.cxx:415
 RooAbsCollection.cxx:416
 RooAbsCollection.cxx:417
 RooAbsCollection.cxx:418
 RooAbsCollection.cxx:419
 RooAbsCollection.cxx:420
 RooAbsCollection.cxx:421
 RooAbsCollection.cxx:422
 RooAbsCollection.cxx:423
 RooAbsCollection.cxx:424
 RooAbsCollection.cxx:425
 RooAbsCollection.cxx:426
 RooAbsCollection.cxx:427
 RooAbsCollection.cxx:428
 RooAbsCollection.cxx:429
 RooAbsCollection.cxx:430
 RooAbsCollection.cxx:431
 RooAbsCollection.cxx:432
 RooAbsCollection.cxx:433
 RooAbsCollection.cxx:434
 RooAbsCollection.cxx:435
 RooAbsCollection.cxx:436
 RooAbsCollection.cxx:437
 RooAbsCollection.cxx:438
 RooAbsCollection.cxx:439
 RooAbsCollection.cxx:440
 RooAbsCollection.cxx:441
 RooAbsCollection.cxx:442
 RooAbsCollection.cxx:443
 RooAbsCollection.cxx:444
 RooAbsCollection.cxx:445
 RooAbsCollection.cxx:446
 RooAbsCollection.cxx:447
 RooAbsCollection.cxx:448
 RooAbsCollection.cxx:449
 RooAbsCollection.cxx:450
 RooAbsCollection.cxx:451
 RooAbsCollection.cxx:452
 RooAbsCollection.cxx:453
 RooAbsCollection.cxx:454
 RooAbsCollection.cxx:455
 RooAbsCollection.cxx:456
 RooAbsCollection.cxx:457
 RooAbsCollection.cxx:458
 RooAbsCollection.cxx:459
 RooAbsCollection.cxx:460
 RooAbsCollection.cxx:461
 RooAbsCollection.cxx:462
 RooAbsCollection.cxx:463
 RooAbsCollection.cxx:464
 RooAbsCollection.cxx:465
 RooAbsCollection.cxx:466
 RooAbsCollection.cxx:467
 RooAbsCollection.cxx:468
 RooAbsCollection.cxx:469
 RooAbsCollection.cxx:470
 RooAbsCollection.cxx:471
 RooAbsCollection.cxx:472
 RooAbsCollection.cxx:473
 RooAbsCollection.cxx:474
 RooAbsCollection.cxx:475
 RooAbsCollection.cxx:476
 RooAbsCollection.cxx:477
 RooAbsCollection.cxx:478
 RooAbsCollection.cxx:479
 RooAbsCollection.cxx:480
 RooAbsCollection.cxx:481
 RooAbsCollection.cxx:482
 RooAbsCollection.cxx:483
 RooAbsCollection.cxx:484
 RooAbsCollection.cxx:485
 RooAbsCollection.cxx:486
 RooAbsCollection.cxx:487
 RooAbsCollection.cxx:488
 RooAbsCollection.cxx:489
 RooAbsCollection.cxx:490
 RooAbsCollection.cxx:491
 RooAbsCollection.cxx:492
 RooAbsCollection.cxx:493
 RooAbsCollection.cxx:494
 RooAbsCollection.cxx:495
 RooAbsCollection.cxx:496
 RooAbsCollection.cxx:497
 RooAbsCollection.cxx:498
 RooAbsCollection.cxx:499
 RooAbsCollection.cxx:500
 RooAbsCollection.cxx:501
 RooAbsCollection.cxx:502
 RooAbsCollection.cxx:503
 RooAbsCollection.cxx:504
 RooAbsCollection.cxx:505
 RooAbsCollection.cxx:506
 RooAbsCollection.cxx:507
 RooAbsCollection.cxx:508
 RooAbsCollection.cxx:509
 RooAbsCollection.cxx:510
 RooAbsCollection.cxx:511
 RooAbsCollection.cxx:512
 RooAbsCollection.cxx:513
 RooAbsCollection.cxx:514
 RooAbsCollection.cxx:515
 RooAbsCollection.cxx:516
 RooAbsCollection.cxx:517
 RooAbsCollection.cxx:518
 RooAbsCollection.cxx:519
 RooAbsCollection.cxx:520
 RooAbsCollection.cxx:521
 RooAbsCollection.cxx:522
 RooAbsCollection.cxx:523
 RooAbsCollection.cxx:524
 RooAbsCollection.cxx:525
 RooAbsCollection.cxx:526
 RooAbsCollection.cxx:527
 RooAbsCollection.cxx:528
 RooAbsCollection.cxx:529
 RooAbsCollection.cxx:530
 RooAbsCollection.cxx:531
 RooAbsCollection.cxx:532
 RooAbsCollection.cxx:533
 RooAbsCollection.cxx:534
 RooAbsCollection.cxx:535
 RooAbsCollection.cxx:536
 RooAbsCollection.cxx:537
 RooAbsCollection.cxx:538
 RooAbsCollection.cxx:539
 RooAbsCollection.cxx:540
 RooAbsCollection.cxx:541
 RooAbsCollection.cxx:542
 RooAbsCollection.cxx:543
 RooAbsCollection.cxx:544
 RooAbsCollection.cxx:545
 RooAbsCollection.cxx:546
 RooAbsCollection.cxx:547
 RooAbsCollection.cxx:548
 RooAbsCollection.cxx:549
 RooAbsCollection.cxx:550
 RooAbsCollection.cxx:551
 RooAbsCollection.cxx:552
 RooAbsCollection.cxx:553
 RooAbsCollection.cxx:554
 RooAbsCollection.cxx:555
 RooAbsCollection.cxx:556
 RooAbsCollection.cxx:557
 RooAbsCollection.cxx:558
 RooAbsCollection.cxx:559
 RooAbsCollection.cxx:560
 RooAbsCollection.cxx:561
 RooAbsCollection.cxx:562
 RooAbsCollection.cxx:563
 RooAbsCollection.cxx:564
 RooAbsCollection.cxx:565
 RooAbsCollection.cxx:566
 RooAbsCollection.cxx:567
 RooAbsCollection.cxx:568
 RooAbsCollection.cxx:569
 RooAbsCollection.cxx:570
 RooAbsCollection.cxx:571
 RooAbsCollection.cxx:572
 RooAbsCollection.cxx:573
 RooAbsCollection.cxx:574
 RooAbsCollection.cxx:575
 RooAbsCollection.cxx:576
 RooAbsCollection.cxx:577
 RooAbsCollection.cxx:578
 RooAbsCollection.cxx:579
 RooAbsCollection.cxx:580
 RooAbsCollection.cxx:581
 RooAbsCollection.cxx:582
 RooAbsCollection.cxx:583
 RooAbsCollection.cxx:584
 RooAbsCollection.cxx:585
 RooAbsCollection.cxx:586
 RooAbsCollection.cxx:587
 RooAbsCollection.cxx:588
 RooAbsCollection.cxx:589
 RooAbsCollection.cxx:590
 RooAbsCollection.cxx:591
 RooAbsCollection.cxx:592
 RooAbsCollection.cxx:593
 RooAbsCollection.cxx:594
 RooAbsCollection.cxx:595
 RooAbsCollection.cxx:596
 RooAbsCollection.cxx:597
 RooAbsCollection.cxx:598
 RooAbsCollection.cxx:599
 RooAbsCollection.cxx:600
 RooAbsCollection.cxx:601
 RooAbsCollection.cxx:602
 RooAbsCollection.cxx:603
 RooAbsCollection.cxx:604
 RooAbsCollection.cxx:605
 RooAbsCollection.cxx:606
 RooAbsCollection.cxx:607
 RooAbsCollection.cxx:608
 RooAbsCollection.cxx:609
 RooAbsCollection.cxx:610
 RooAbsCollection.cxx:611
 RooAbsCollection.cxx:612
 RooAbsCollection.cxx:613
 RooAbsCollection.cxx:614
 RooAbsCollection.cxx:615
 RooAbsCollection.cxx:616
 RooAbsCollection.cxx:617
 RooAbsCollection.cxx:618
 RooAbsCollection.cxx:619
 RooAbsCollection.cxx:620
 RooAbsCollection.cxx:621
 RooAbsCollection.cxx:622
 RooAbsCollection.cxx:623
 RooAbsCollection.cxx:624
 RooAbsCollection.cxx:625
 RooAbsCollection.cxx:626
 RooAbsCollection.cxx:627
 RooAbsCollection.cxx:628
 RooAbsCollection.cxx:629
 RooAbsCollection.cxx:630
 RooAbsCollection.cxx:631
 RooAbsCollection.cxx:632
 RooAbsCollection.cxx:633
 RooAbsCollection.cxx:634
 RooAbsCollection.cxx:635
 RooAbsCollection.cxx:636
 RooAbsCollection.cxx:637
 RooAbsCollection.cxx:638
 RooAbsCollection.cxx:639
 RooAbsCollection.cxx:640
 RooAbsCollection.cxx:641
 RooAbsCollection.cxx:642
 RooAbsCollection.cxx:643
 RooAbsCollection.cxx:644
 RooAbsCollection.cxx:645
 RooAbsCollection.cxx:646
 RooAbsCollection.cxx:647
 RooAbsCollection.cxx:648
 RooAbsCollection.cxx:649
 RooAbsCollection.cxx:650
 RooAbsCollection.cxx:651
 RooAbsCollection.cxx:652
 RooAbsCollection.cxx:653
 RooAbsCollection.cxx:654
 RooAbsCollection.cxx:655
 RooAbsCollection.cxx:656
 RooAbsCollection.cxx:657
 RooAbsCollection.cxx:658
 RooAbsCollection.cxx:659
 RooAbsCollection.cxx:660
 RooAbsCollection.cxx:661
 RooAbsCollection.cxx:662
 RooAbsCollection.cxx:663
 RooAbsCollection.cxx:664
 RooAbsCollection.cxx:665
 RooAbsCollection.cxx:666
 RooAbsCollection.cxx:667
 RooAbsCollection.cxx:668
 RooAbsCollection.cxx:669
 RooAbsCollection.cxx:670
 RooAbsCollection.cxx:671
 RooAbsCollection.cxx:672
 RooAbsCollection.cxx:673
 RooAbsCollection.cxx:674
 RooAbsCollection.cxx:675
 RooAbsCollection.cxx:676
 RooAbsCollection.cxx:677
 RooAbsCollection.cxx:678
 RooAbsCollection.cxx:679
 RooAbsCollection.cxx:680
 RooAbsCollection.cxx:681
 RooAbsCollection.cxx:682
 RooAbsCollection.cxx:683
 RooAbsCollection.cxx:684
 RooAbsCollection.cxx:685
 RooAbsCollection.cxx:686
 RooAbsCollection.cxx:687
 RooAbsCollection.cxx:688
 RooAbsCollection.cxx:689
 RooAbsCollection.cxx:690
 RooAbsCollection.cxx:691
 RooAbsCollection.cxx:692
 RooAbsCollection.cxx:693
 RooAbsCollection.cxx:694
 RooAbsCollection.cxx:695
 RooAbsCollection.cxx:696
 RooAbsCollection.cxx:697
 RooAbsCollection.cxx:698
 RooAbsCollection.cxx:699
 RooAbsCollection.cxx:700
 RooAbsCollection.cxx:701
 RooAbsCollection.cxx:702
 RooAbsCollection.cxx:703
 RooAbsCollection.cxx:704
 RooAbsCollection.cxx:705
 RooAbsCollection.cxx:706
 RooAbsCollection.cxx:707
 RooAbsCollection.cxx:708
 RooAbsCollection.cxx:709
 RooAbsCollection.cxx:710
 RooAbsCollection.cxx:711
 RooAbsCollection.cxx:712
 RooAbsCollection.cxx:713
 RooAbsCollection.cxx:714
 RooAbsCollection.cxx:715
 RooAbsCollection.cxx:716
 RooAbsCollection.cxx:717
 RooAbsCollection.cxx:718
 RooAbsCollection.cxx:719
 RooAbsCollection.cxx:720
 RooAbsCollection.cxx:721
 RooAbsCollection.cxx:722
 RooAbsCollection.cxx:723
 RooAbsCollection.cxx:724
 RooAbsCollection.cxx:725
 RooAbsCollection.cxx:726
 RooAbsCollection.cxx:727
 RooAbsCollection.cxx:728
 RooAbsCollection.cxx:729
 RooAbsCollection.cxx:730
 RooAbsCollection.cxx:731
 RooAbsCollection.cxx:732
 RooAbsCollection.cxx:733
 RooAbsCollection.cxx:734
 RooAbsCollection.cxx:735
 RooAbsCollection.cxx:736
 RooAbsCollection.cxx:737
 RooAbsCollection.cxx:738
 RooAbsCollection.cxx:739
 RooAbsCollection.cxx:740
 RooAbsCollection.cxx:741
 RooAbsCollection.cxx:742
 RooAbsCollection.cxx:743
 RooAbsCollection.cxx:744
 RooAbsCollection.cxx:745
 RooAbsCollection.cxx:746
 RooAbsCollection.cxx:747
 RooAbsCollection.cxx:748
 RooAbsCollection.cxx:749
 RooAbsCollection.cxx:750
 RooAbsCollection.cxx:751
 RooAbsCollection.cxx:752
 RooAbsCollection.cxx:753
 RooAbsCollection.cxx:754
 RooAbsCollection.cxx:755
 RooAbsCollection.cxx:756
 RooAbsCollection.cxx:757
 RooAbsCollection.cxx:758
 RooAbsCollection.cxx:759
 RooAbsCollection.cxx:760
 RooAbsCollection.cxx:761
 RooAbsCollection.cxx:762
 RooAbsCollection.cxx:763
 RooAbsCollection.cxx:764
 RooAbsCollection.cxx:765
 RooAbsCollection.cxx:766
 RooAbsCollection.cxx:767
 RooAbsCollection.cxx:768
 RooAbsCollection.cxx:769
 RooAbsCollection.cxx:770
 RooAbsCollection.cxx:771
 RooAbsCollection.cxx:772
 RooAbsCollection.cxx:773
 RooAbsCollection.cxx:774
 RooAbsCollection.cxx:775
 RooAbsCollection.cxx:776
 RooAbsCollection.cxx:777
 RooAbsCollection.cxx:778
 RooAbsCollection.cxx:779
 RooAbsCollection.cxx:780
 RooAbsCollection.cxx:781
 RooAbsCollection.cxx:782
 RooAbsCollection.cxx:783
 RooAbsCollection.cxx:784
 RooAbsCollection.cxx:785
 RooAbsCollection.cxx:786
 RooAbsCollection.cxx:787
 RooAbsCollection.cxx:788
 RooAbsCollection.cxx:789
 RooAbsCollection.cxx:790
 RooAbsCollection.cxx:791
 RooAbsCollection.cxx:792
 RooAbsCollection.cxx:793
 RooAbsCollection.cxx:794
 RooAbsCollection.cxx:795
 RooAbsCollection.cxx:796
 RooAbsCollection.cxx:797
 RooAbsCollection.cxx:798
 RooAbsCollection.cxx:799
 RooAbsCollection.cxx:800
 RooAbsCollection.cxx:801
 RooAbsCollection.cxx:802
 RooAbsCollection.cxx:803
 RooAbsCollection.cxx:804
 RooAbsCollection.cxx:805
 RooAbsCollection.cxx:806
 RooAbsCollection.cxx:807
 RooAbsCollection.cxx:808
 RooAbsCollection.cxx:809
 RooAbsCollection.cxx:810
 RooAbsCollection.cxx:811
 RooAbsCollection.cxx:812
 RooAbsCollection.cxx:813
 RooAbsCollection.cxx:814
 RooAbsCollection.cxx:815
 RooAbsCollection.cxx:816
 RooAbsCollection.cxx:817
 RooAbsCollection.cxx:818
 RooAbsCollection.cxx:819
 RooAbsCollection.cxx:820
 RooAbsCollection.cxx:821
 RooAbsCollection.cxx:822
 RooAbsCollection.cxx:823
 RooAbsCollection.cxx:824
 RooAbsCollection.cxx:825
 RooAbsCollection.cxx:826
 RooAbsCollection.cxx:827
 RooAbsCollection.cxx:828
 RooAbsCollection.cxx:829
 RooAbsCollection.cxx:830
 RooAbsCollection.cxx:831
 RooAbsCollection.cxx:832
 RooAbsCollection.cxx:833
 RooAbsCollection.cxx:834
 RooAbsCollection.cxx:835
 RooAbsCollection.cxx:836
 RooAbsCollection.cxx:837
 RooAbsCollection.cxx:838
 RooAbsCollection.cxx:839
 RooAbsCollection.cxx:840
 RooAbsCollection.cxx:841
 RooAbsCollection.cxx:842
 RooAbsCollection.cxx:843
 RooAbsCollection.cxx:844
 RooAbsCollection.cxx:845
 RooAbsCollection.cxx:846
 RooAbsCollection.cxx:847
 RooAbsCollection.cxx:848
 RooAbsCollection.cxx:849
 RooAbsCollection.cxx:850
 RooAbsCollection.cxx:851
 RooAbsCollection.cxx:852
 RooAbsCollection.cxx:853
 RooAbsCollection.cxx:854
 RooAbsCollection.cxx:855
 RooAbsCollection.cxx:856
 RooAbsCollection.cxx:857
 RooAbsCollection.cxx:858
 RooAbsCollection.cxx:859
 RooAbsCollection.cxx:860
 RooAbsCollection.cxx:861
 RooAbsCollection.cxx:862
 RooAbsCollection.cxx:863
 RooAbsCollection.cxx:864
 RooAbsCollection.cxx:865
 RooAbsCollection.cxx:866
 RooAbsCollection.cxx:867
 RooAbsCollection.cxx:868
 RooAbsCollection.cxx:869
 RooAbsCollection.cxx:870
 RooAbsCollection.cxx:871
 RooAbsCollection.cxx:872
 RooAbsCollection.cxx:873
 RooAbsCollection.cxx:874
 RooAbsCollection.cxx:875
 RooAbsCollection.cxx:876
 RooAbsCollection.cxx:877
 RooAbsCollection.cxx:878
 RooAbsCollection.cxx:879
 RooAbsCollection.cxx:880
 RooAbsCollection.cxx:881
 RooAbsCollection.cxx:882
 RooAbsCollection.cxx:883
 RooAbsCollection.cxx:884
 RooAbsCollection.cxx:885
 RooAbsCollection.cxx:886
 RooAbsCollection.cxx:887
 RooAbsCollection.cxx:888
 RooAbsCollection.cxx:889
 RooAbsCollection.cxx:890
 RooAbsCollection.cxx:891
 RooAbsCollection.cxx:892
 RooAbsCollection.cxx:893
 RooAbsCollection.cxx:894
 RooAbsCollection.cxx:895
 RooAbsCollection.cxx:896
 RooAbsCollection.cxx:897
 RooAbsCollection.cxx:898
 RooAbsCollection.cxx:899
 RooAbsCollection.cxx:900
 RooAbsCollection.cxx:901
 RooAbsCollection.cxx:902
 RooAbsCollection.cxx:903
 RooAbsCollection.cxx:904
 RooAbsCollection.cxx:905
 RooAbsCollection.cxx:906
 RooAbsCollection.cxx:907
 RooAbsCollection.cxx:908
 RooAbsCollection.cxx:909
 RooAbsCollection.cxx:910
 RooAbsCollection.cxx:911
 RooAbsCollection.cxx:912
 RooAbsCollection.cxx:913
 RooAbsCollection.cxx:914
 RooAbsCollection.cxx:915
 RooAbsCollection.cxx:916
 RooAbsCollection.cxx:917
 RooAbsCollection.cxx:918
 RooAbsCollection.cxx:919
 RooAbsCollection.cxx:920
 RooAbsCollection.cxx:921
 RooAbsCollection.cxx:922
 RooAbsCollection.cxx:923
 RooAbsCollection.cxx:924
 RooAbsCollection.cxx:925
 RooAbsCollection.cxx:926
 RooAbsCollection.cxx:927
 RooAbsCollection.cxx:928
 RooAbsCollection.cxx:929
 RooAbsCollection.cxx:930
 RooAbsCollection.cxx:931
 RooAbsCollection.cxx:932
 RooAbsCollection.cxx:933
 RooAbsCollection.cxx:934
 RooAbsCollection.cxx:935
 RooAbsCollection.cxx:936
 RooAbsCollection.cxx:937
 RooAbsCollection.cxx:938
 RooAbsCollection.cxx:939
 RooAbsCollection.cxx:940
 RooAbsCollection.cxx:941
 RooAbsCollection.cxx:942
 RooAbsCollection.cxx:943
 RooAbsCollection.cxx:944
 RooAbsCollection.cxx:945
 RooAbsCollection.cxx:946
 RooAbsCollection.cxx:947
 RooAbsCollection.cxx:948
 RooAbsCollection.cxx:949
 RooAbsCollection.cxx:950
 RooAbsCollection.cxx:951
 RooAbsCollection.cxx:952
 RooAbsCollection.cxx:953
 RooAbsCollection.cxx:954
 RooAbsCollection.cxx:955
 RooAbsCollection.cxx:956
 RooAbsCollection.cxx:957
 RooAbsCollection.cxx:958
 RooAbsCollection.cxx:959
 RooAbsCollection.cxx:960
 RooAbsCollection.cxx:961
 RooAbsCollection.cxx:962
 RooAbsCollection.cxx:963
 RooAbsCollection.cxx:964
 RooAbsCollection.cxx:965
 RooAbsCollection.cxx:966
 RooAbsCollection.cxx:967
 RooAbsCollection.cxx:968
 RooAbsCollection.cxx:969
 RooAbsCollection.cxx:970
 RooAbsCollection.cxx:971
 RooAbsCollection.cxx:972
 RooAbsCollection.cxx:973
 RooAbsCollection.cxx:974
 RooAbsCollection.cxx:975
 RooAbsCollection.cxx:976
 RooAbsCollection.cxx:977
 RooAbsCollection.cxx:978
 RooAbsCollection.cxx:979
 RooAbsCollection.cxx:980
 RooAbsCollection.cxx:981
 RooAbsCollection.cxx:982
 RooAbsCollection.cxx:983
 RooAbsCollection.cxx:984
 RooAbsCollection.cxx:985
 RooAbsCollection.cxx:986
 RooAbsCollection.cxx:987
 RooAbsCollection.cxx:988
 RooAbsCollection.cxx:989
 RooAbsCollection.cxx:990
 RooAbsCollection.cxx:991
 RooAbsCollection.cxx:992
 RooAbsCollection.cxx:993
 RooAbsCollection.cxx:994
 RooAbsCollection.cxx:995
 RooAbsCollection.cxx:996
 RooAbsCollection.cxx:997
 RooAbsCollection.cxx:998
 RooAbsCollection.cxx:999
 RooAbsCollection.cxx:1000
 RooAbsCollection.cxx:1001
 RooAbsCollection.cxx:1002
 RooAbsCollection.cxx:1003
 RooAbsCollection.cxx:1004
 RooAbsCollection.cxx:1005
 RooAbsCollection.cxx:1006
 RooAbsCollection.cxx:1007
 RooAbsCollection.cxx:1008
 RooAbsCollection.cxx:1009
 RooAbsCollection.cxx:1010
 RooAbsCollection.cxx:1011
 RooAbsCollection.cxx:1012
 RooAbsCollection.cxx:1013
 RooAbsCollection.cxx:1014
 RooAbsCollection.cxx:1015
 RooAbsCollection.cxx:1016
 RooAbsCollection.cxx:1017
 RooAbsCollection.cxx:1018
 RooAbsCollection.cxx:1019
 RooAbsCollection.cxx:1020
 RooAbsCollection.cxx:1021
 RooAbsCollection.cxx:1022
 RooAbsCollection.cxx:1023
 RooAbsCollection.cxx:1024
 RooAbsCollection.cxx:1025
 RooAbsCollection.cxx:1026
 RooAbsCollection.cxx:1027
 RooAbsCollection.cxx:1028
 RooAbsCollection.cxx:1029
 RooAbsCollection.cxx:1030
 RooAbsCollection.cxx:1031
 RooAbsCollection.cxx:1032
 RooAbsCollection.cxx:1033
 RooAbsCollection.cxx:1034
 RooAbsCollection.cxx:1035
 RooAbsCollection.cxx:1036
 RooAbsCollection.cxx:1037
 RooAbsCollection.cxx:1038
 RooAbsCollection.cxx:1039
 RooAbsCollection.cxx:1040
 RooAbsCollection.cxx:1041
 RooAbsCollection.cxx:1042
 RooAbsCollection.cxx:1043
 RooAbsCollection.cxx:1044
 RooAbsCollection.cxx:1045
 RooAbsCollection.cxx:1046
 RooAbsCollection.cxx:1047
 RooAbsCollection.cxx:1048
 RooAbsCollection.cxx:1049
 RooAbsCollection.cxx:1050
 RooAbsCollection.cxx:1051
 RooAbsCollection.cxx:1052
 RooAbsCollection.cxx:1053
 RooAbsCollection.cxx:1054
 RooAbsCollection.cxx:1055
 RooAbsCollection.cxx:1056
 RooAbsCollection.cxx:1057
 RooAbsCollection.cxx:1058
 RooAbsCollection.cxx:1059
 RooAbsCollection.cxx:1060
 RooAbsCollection.cxx:1061
 RooAbsCollection.cxx:1062
 RooAbsCollection.cxx:1063
 RooAbsCollection.cxx:1064
 RooAbsCollection.cxx:1065
 RooAbsCollection.cxx:1066
 RooAbsCollection.cxx:1067
 RooAbsCollection.cxx:1068
 RooAbsCollection.cxx:1069
 RooAbsCollection.cxx:1070
 RooAbsCollection.cxx:1071
 RooAbsCollection.cxx:1072
 RooAbsCollection.cxx:1073
 RooAbsCollection.cxx:1074
 RooAbsCollection.cxx:1075
 RooAbsCollection.cxx:1076
 RooAbsCollection.cxx:1077
 RooAbsCollection.cxx:1078
 RooAbsCollection.cxx:1079
 RooAbsCollection.cxx:1080
 RooAbsCollection.cxx:1081
 RooAbsCollection.cxx:1082
 RooAbsCollection.cxx:1083
 RooAbsCollection.cxx:1084
 RooAbsCollection.cxx:1085
 RooAbsCollection.cxx:1086
 RooAbsCollection.cxx:1087
 RooAbsCollection.cxx:1088
 RooAbsCollection.cxx:1089
 RooAbsCollection.cxx:1090
 RooAbsCollection.cxx:1091
 RooAbsCollection.cxx:1092
 RooAbsCollection.cxx:1093
 RooAbsCollection.cxx:1094
 RooAbsCollection.cxx:1095
 RooAbsCollection.cxx:1096
 RooAbsCollection.cxx:1097
 RooAbsCollection.cxx:1098
 RooAbsCollection.cxx:1099
 RooAbsCollection.cxx:1100
 RooAbsCollection.cxx:1101
 RooAbsCollection.cxx:1102
 RooAbsCollection.cxx:1103
 RooAbsCollection.cxx:1104
 RooAbsCollection.cxx:1105
 RooAbsCollection.cxx:1106
 RooAbsCollection.cxx:1107
 RooAbsCollection.cxx:1108
 RooAbsCollection.cxx:1109
 RooAbsCollection.cxx:1110
 RooAbsCollection.cxx:1111
 RooAbsCollection.cxx:1112
 RooAbsCollection.cxx:1113
 RooAbsCollection.cxx:1114
 RooAbsCollection.cxx:1115
 RooAbsCollection.cxx:1116
 RooAbsCollection.cxx:1117
 RooAbsCollection.cxx:1118
 RooAbsCollection.cxx:1119
 RooAbsCollection.cxx:1120
 RooAbsCollection.cxx:1121
 RooAbsCollection.cxx:1122
 RooAbsCollection.cxx:1123
 RooAbsCollection.cxx:1124
 RooAbsCollection.cxx:1125
 RooAbsCollection.cxx:1126
 RooAbsCollection.cxx:1127
 RooAbsCollection.cxx:1128
 RooAbsCollection.cxx:1129
 RooAbsCollection.cxx:1130
 RooAbsCollection.cxx:1131
 RooAbsCollection.cxx:1132
 RooAbsCollection.cxx:1133
 RooAbsCollection.cxx:1134
 RooAbsCollection.cxx:1135
 RooAbsCollection.cxx:1136
 RooAbsCollection.cxx:1137
 RooAbsCollection.cxx:1138
 RooAbsCollection.cxx:1139
 RooAbsCollection.cxx:1140
 RooAbsCollection.cxx:1141
 RooAbsCollection.cxx:1142
 RooAbsCollection.cxx:1143
 RooAbsCollection.cxx:1144
 RooAbsCollection.cxx:1145
 RooAbsCollection.cxx:1146
 RooAbsCollection.cxx:1147
 RooAbsCollection.cxx:1148
 RooAbsCollection.cxx:1149
 RooAbsCollection.cxx:1150
 RooAbsCollection.cxx:1151
 RooAbsCollection.cxx:1152
 RooAbsCollection.cxx:1153
 RooAbsCollection.cxx:1154
 RooAbsCollection.cxx:1155
 RooAbsCollection.cxx:1156
 RooAbsCollection.cxx:1157
 RooAbsCollection.cxx:1158
 RooAbsCollection.cxx:1159
 RooAbsCollection.cxx:1160
 RooAbsCollection.cxx:1161
 RooAbsCollection.cxx:1162
 RooAbsCollection.cxx:1163
 RooAbsCollection.cxx:1164
 RooAbsCollection.cxx:1165
 RooAbsCollection.cxx:1166
 RooAbsCollection.cxx:1167
 RooAbsCollection.cxx:1168
 RooAbsCollection.cxx:1169
 RooAbsCollection.cxx:1170
 RooAbsCollection.cxx:1171
 RooAbsCollection.cxx:1172
 RooAbsCollection.cxx:1173
 RooAbsCollection.cxx:1174
 RooAbsCollection.cxx:1175
 RooAbsCollection.cxx:1176
 RooAbsCollection.cxx:1177
 RooAbsCollection.cxx:1178
 RooAbsCollection.cxx:1179
 RooAbsCollection.cxx:1180
 RooAbsCollection.cxx:1181
 RooAbsCollection.cxx:1182
 RooAbsCollection.cxx:1183
 RooAbsCollection.cxx:1184
 RooAbsCollection.cxx:1185
 RooAbsCollection.cxx:1186
 RooAbsCollection.cxx:1187
 RooAbsCollection.cxx:1188
 RooAbsCollection.cxx:1189
 RooAbsCollection.cxx:1190
 RooAbsCollection.cxx:1191
 RooAbsCollection.cxx:1192
 RooAbsCollection.cxx:1193
 RooAbsCollection.cxx:1194
 RooAbsCollection.cxx:1195
 RooAbsCollection.cxx:1196
 RooAbsCollection.cxx:1197
 RooAbsCollection.cxx:1198
 RooAbsCollection.cxx:1199
 RooAbsCollection.cxx:1200
 RooAbsCollection.cxx:1201
 RooAbsCollection.cxx:1202
 RooAbsCollection.cxx:1203
 RooAbsCollection.cxx:1204
 RooAbsCollection.cxx:1205
 RooAbsCollection.cxx:1206
 RooAbsCollection.cxx:1207
 RooAbsCollection.cxx:1208
 RooAbsCollection.cxx:1209
 RooAbsCollection.cxx:1210
 RooAbsCollection.cxx:1211
 RooAbsCollection.cxx:1212
 RooAbsCollection.cxx:1213
 RooAbsCollection.cxx:1214
 RooAbsCollection.cxx:1215
 RooAbsCollection.cxx:1216
 RooAbsCollection.cxx:1217
 RooAbsCollection.cxx:1218
 RooAbsCollection.cxx:1219
 RooAbsCollection.cxx:1220
 RooAbsCollection.cxx:1221
 RooAbsCollection.cxx:1222
 RooAbsCollection.cxx:1223
 RooAbsCollection.cxx:1224
 RooAbsCollection.cxx:1225
 RooAbsCollection.cxx:1226
 RooAbsCollection.cxx:1227
 RooAbsCollection.cxx:1228
 RooAbsCollection.cxx:1229
 RooAbsCollection.cxx:1230
 RooAbsCollection.cxx:1231
 RooAbsCollection.cxx:1232
 RooAbsCollection.cxx:1233
 RooAbsCollection.cxx:1234
 RooAbsCollection.cxx:1235
 RooAbsCollection.cxx:1236
 RooAbsCollection.cxx:1237
 RooAbsCollection.cxx:1238
 RooAbsCollection.cxx:1239
 RooAbsCollection.cxx:1240
 RooAbsCollection.cxx:1241
 RooAbsCollection.cxx:1242
 RooAbsCollection.cxx:1243
 RooAbsCollection.cxx:1244
 RooAbsCollection.cxx:1245
 RooAbsCollection.cxx:1246
 RooAbsCollection.cxx:1247
 RooAbsCollection.cxx:1248
 RooAbsCollection.cxx:1249
 RooAbsCollection.cxx:1250
 RooAbsCollection.cxx:1251
 RooAbsCollection.cxx:1252
 RooAbsCollection.cxx:1253
 RooAbsCollection.cxx:1254
 RooAbsCollection.cxx:1255