ROOT logo
/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitCore                                                       *
 * @(#)root/roofitcore:$Id: RooLinkedList.cxx 30333 2009-09-21 15:39:17Z wouter $
 * 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
// RooLinkedList is an collection class for internal use, storing
// a collection of RooAbsArg pointers in a doubly linked list.
// It can optionally add a hash table to speed up random access
// in large collections
// Use RooAbsCollection derived objects for public use
// (e.g. RooArgSet or RooArgList) 
// END_HTML
//

#include "RooFit.h"
#include "Riostream.h"

#include "RooLinkedList.h"
#include "RooLinkedListIter.h"
#include "RooHashTable.h"
#include "RooAbsArg.h"
#include "RooMsgService.h"



ClassImp(RooLinkedList)
;


//_____________________________________________________________________________
RooLinkedList::RooLinkedList(Int_t htsize) : 
  _hashThresh(htsize), _size(0), _first(0), _last(0), _htableName(0), _htableLink(0)
{
  // Constructor with hashing threshold. If collection size exceeds threshold
  // a hash table is added.
}




//_____________________________________________________________________________
RooLinkedList::RooLinkedList(const RooLinkedList& other) :
  TObject(other), _hashThresh(other._hashThresh), _size(0), _first(0), _last(0), _htableName(0), _htableLink(0), _name(other._name)
{
  // Copy constructor

  if (other._htableName) _htableName = new RooHashTable(other._htableName->size()) ;
  if (other._htableLink) _htableLink = new RooHashTable(other._htableLink->size(),RooHashTable::Pointer) ;
  RooLinkedListElem* elem = other._first ;
  while(elem) {
    Add(elem->_arg, elem->_refCount) ;
    elem = elem->_next ;
  }
}



//_____________________________________________________________________________
RooLinkedList& RooLinkedList::operator=(const RooLinkedList& other) 
{
  // Assignment operator, copy contents from 'other'
  
  // Prevent self-assignment
  if (&other==this) return *this ;
  
  // Copy elements
  RooLinkedListElem* elem = other._first ;
  while(elem) {
    Add(elem->_arg) ;
    elem = elem->_next ;
  }    
  
  return *this ;
}



//_____________________________________________________________________________
void RooLinkedList::setHashTableSize(Int_t size) 
{        
  // Change the threshold for hash-table use to given size.
  // If a hash table exists when this method is called, it is regenerated.

  if (size<0) {
    coutE(InputArguments) << "RooLinkedList::setHashTable() ERROR size must be positive" << endl ;
    return ;
  }
  if (size==0) {
    if (!_htableName) {
      // No hash table present
      return ;
    } else {
      // Remove existing hash table
      delete _htableName ;
      delete _htableLink ;
      _htableName = 0 ;
      _htableLink = 0 ;
    }
  } else {

    // (Re)create hash tables
    if (_htableName) delete _htableName ;
    _htableName = new RooHashTable(size) ;

     if (_htableLink) delete _htableLink ;
     _htableLink = new RooHashTable(size,RooHashTable::Pointer) ;
    
    // Fill hash table with existing entries
    RooLinkedListElem* ptr = _first ;
    while(ptr) {
      _htableName->add(ptr->_arg) ;
      _htableLink->add((TObject*)ptr,ptr->_arg) ;
      ptr = ptr->_next ;
    }      
  }
}


 

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

  if (_htableName) {
    delete _htableName ;
    _htableName=0 ;
  }
  if (_htableLink) {
    delete _htableLink ;
    _htableLink=0 ;
  }

  Clear() ;
}



//_____________________________________________________________________________
RooLinkedListElem* RooLinkedList::findLink(const TObject* arg) const 
{    
  // Find the element link containing the given object

  if (_htableLink) {
    return _htableLink->findLinkTo(arg) ;  
  }
  
  RooLinkedListElem* ptr = _first;
  while(ptr) {
    if (ptr->_arg == arg) {
      return ptr ;
    }
    ptr = ptr->_next ;
  }
  return 0 ;
  
}



//_____________________________________________________________________________
void RooLinkedList::Add(TObject* arg, Int_t refCount)
{
  // Insert object into collection with given reference count value

  if (!arg) return ;
  
  // Add to hash table 
  if (_htableName) {

    // Expand capacity of hash table if #entries>#slots
    if (_size > _htableName->size()) {
      setHashTableSize(_size*2) ;
    }

  } else if (_hashThresh>0 && _size>_hashThresh) {

    setHashTableSize(_hashThresh) ;
  }  

  if (_last) {
    // Append element at end of list
    _last = new RooLinkedListElem(arg,_last) ;
  } else {
    // Append first element, set first,last 
    _last = new RooLinkedListElem(arg) ;
    _first=_last ;
  }

  if (_htableName){
    //cout << "storing link " << _last << " with hash arg " << arg << endl ;
    _htableName->add(arg) ;
    _htableLink->add((TObject*)_last,arg) ;
  }

  _size++ ;
  _last->_refCount = refCount ;
  
}




//_____________________________________________________________________________
Bool_t RooLinkedList::Remove(TObject* arg) 
{
  // Remove object from collection

  // Find link element
  RooLinkedListElem* elem = findLink(arg) ;
  if (!elem) return kFALSE ;
  
  // Remove from hash table
  if (_htableName) {
    _htableName->remove(arg) ;
  }
  if (_htableLink) {
    _htableLink->remove((TObject*)elem,arg) ;
  }
  
  // Update first,last if necessary
  if (elem==_first) _first=elem->_next ;
  if (elem==_last) _last=elem->_prev ;
  
  // Delete and shrink
  _size-- ;
  delete elem ;	
  return kTRUE ;
}




//_____________________________________________________________________________
TObject* RooLinkedList::At(Int_t index) const 
{
  // Return object stored in sequential position given by index.
  // If index is out of range, a null pointer is returned.

  // Check range
  if (index<0 || index>=_size) return 0 ;

  
  // Walk list
  RooLinkedListElem* ptr = _first;
  while(index--) ptr = ptr->_next ;
  
  // Return arg
  return ptr->_arg ;
}




//_____________________________________________________________________________
Bool_t RooLinkedList::Replace(const TObject* oldArg, const TObject* newArg) 
{
  // Replace object 'oldArg' in collection with new object 'newArg'.
  // If 'oldArg' is not found in collection kFALSE is returned

  // Find existing element and replace arg
  RooLinkedListElem* elem = findLink(oldArg) ;
  if (!elem) return kFALSE ;
  
  if (_htableName) {
    _htableName->replace(oldArg,newArg) ;
  }
  if (_htableLink) {
    // Link is hashed by contents and may change slot in hash table
    _htableLink->remove((TObject*)elem,(TObject*)oldArg) ;
    _htableLink->add((TObject*)elem,(TObject*)newArg) ;
  }

  elem->_arg = (TObject*)newArg ;
  return kTRUE ;
}



//_____________________________________________________________________________
TObject* RooLinkedList::FindObject(const char* name) const 
{
  // Return pointer to obejct with given name. If no such object
  // is found return a null pointer

  return find(name) ;
}



//_____________________________________________________________________________
TObject* RooLinkedList::FindObject(const TObject* obj) const 
{
  // Find object in list. If list contains object return 
  // (same) pointer to object, otherwise return null pointer

  RooLinkedListElem *elem = findLink((TObject*)obj) ;
  return elem ? elem->_arg : 0 ;
}



//_____________________________________________________________________________
void RooLinkedList::Clear(Option_t *) 
{
  // Remove all elements from collection

  RooLinkedListElem* elem = _first;
  while(elem) {
    RooLinkedListElem* next = elem->_next ;
      delete elem ;
      elem = next ;
  }
  _first = 0 ;
  _last = 0 ;
  _size = 0 ;
  
  if (_htableName) {
    Int_t hsize = _htableName->size() ;
    delete _htableName ;
    _htableName = new RooHashTable(hsize) ;   
  }
  if (_htableLink) {
    Int_t hsize = _htableLink->size() ;
    delete _htableLink ;
    _htableLink = new RooHashTable(hsize,RooHashTable::Pointer) ;       
  }
}



//_____________________________________________________________________________
void RooLinkedList::Delete(Option_t *) 
{
  // Remove all elements in collection and delete all elements
  // NB: Collection does not own elements, this function should
  // be used judiciously by caller. 

  RooLinkedListElem* elem = _first;
  while(elem) {
    RooLinkedListElem* next = elem->_next ;
    delete elem->_arg ;
    delete elem ;
    elem = next ;
  }
  _first = 0 ;
  _last = 0 ;
  _size = 0 ;

  if (_htableName) {
    Int_t hsize = _htableName->size() ;
    delete _htableName ;
    _htableName = new RooHashTable(hsize) ;   
  }
  if (_htableLink) {
    Int_t hsize = _htableLink->size() ;
    delete _htableLink ;
    _htableLink = new RooHashTable(hsize,RooHashTable::Pointer) ;       
  }
}


  

//_____________________________________________________________________________
TObject* RooLinkedList::find(const char* name) const 
{
  // Return pointer to object with given name in collection.
  // If no such object is found, return null pointer.

  if (_htableName) return _htableName->find(name) ;

  RooLinkedListElem* ptr = _first ;
  while(ptr) {
    if (!strcmp(ptr->_arg->GetName(),name)) {
      return ptr->_arg ;
    }
    ptr = ptr->_next ;
  }
  return 0 ;
}



//_____________________________________________________________________________
Int_t RooLinkedList::IndexOf(const TObject* arg) const 
{
  // Return position of given object in list. If object
  // is not contained in list, return -1

  RooLinkedListElem* ptr = _first;
  Int_t idx(0) ;
  while(ptr) {
    if (ptr->_arg==arg) return idx ;
    ptr = ptr->_next ;
    idx++ ;
  }
  return -1 ;
}



//_____________________________________________________________________________
Int_t RooLinkedList::IndexOf(const char* name) const 
{
  // Return position of given object in list. If object
  // is not contained in list, return -1

  RooLinkedListElem* ptr = _first;
  Int_t idx(0) ;
  while(ptr) {
    if (strcmp(ptr->_arg->GetName(),name)==0) return idx ;
    ptr = ptr->_next ;
    idx++ ;
  }
  return -1 ;
}



//_____________________________________________________________________________
void RooLinkedList::Print(const char* opt) const 
{
  // Print contents of list, defers to Print() function
  // of contained objects
  RooLinkedListElem* elem = _first ;
  while(elem) {
    cout << elem->_arg << " : " ; 
    elem->_arg->Print(opt) ;
    elem = elem->_next ;
  }    
}



//_____________________________________________________________________________
TIterator* RooLinkedList::MakeIterator(Bool_t dir) const 
{
  // Return an iterator over this list
  return new RooLinkedListIter(this,dir) ;
}


//_____________________________________________________________________________
RooLinkedListIter RooLinkedList::iterator(Bool_t dir) const 
{
  // Return an iterator over this list
  return RooLinkedListIter(this,dir) ;
}



//_____________________________________________________________________________
void RooLinkedList::Sort(Bool_t ascend) 
{
  // Sort elements of this list according to their
  // TObject::Compare() ranking via a simple
  // bubble sort algorithm

  if (_size<2) return ;

  Bool_t working(kTRUE) ;
  while(working) {
    working = kFALSE ;
    RooLinkedListElem* ptr = _first;
    while(ptr && ptr->_next) {    
      if ((ascend && ptr->_arg->Compare(ptr->_next->_arg)>0) ||
	  (!ascend && ptr->_arg->Compare(ptr->_next->_arg)<0)) {
	swapWithNext(ptr) ;
	working = kTRUE ;
      }
      ptr = ptr->_next ;
    }
  }

  return ;
}



//_____________________________________________________________________________
void RooLinkedList::swapWithNext(RooLinkedListElem* elemB) 
{
  // Swap given to elements in the linked list. Auxiliary function for Sort()

  RooLinkedListElem* elemA = elemB->_prev ;
  RooLinkedListElem* elemC = elemB->_next ;
  RooLinkedListElem* elemD = elemC->_next ;
  if (!elemC) return ;

  if (elemA) {
    elemA->_next = elemC ;
  } else {
    _first = elemC ;
  }
  elemB->_prev = elemC ;
  elemB->_next = elemD ;
  elemC->_prev = elemA ;
  elemC->_next = elemB ;
  if (elemD) {
    elemD->_prev = elemB ;
  } else {
    _last = elemB ;
  }
  return ;
}



// void Roo1DTable::Streamer(TBuffer &R__b)
// {
//    // Stream an object of class Roo1DTable.

//    if (R__b.IsReading()) {
//       R__b.ReadClassBuffer(Roo1DTable::Class(),this);
//    } else {
//       R__b.WriteClassBuffer(Roo1DTable::Class(),this);
//    }
// }



//_____________________________________________________________________________
void RooLinkedList::Streamer(TBuffer &R__b)
{
  // Custom streaming handling schema evolution w.r.t past implementations

  if (R__b.IsReading()) {

    Version_t v = R__b.ReadVersion();
    //R__b.ReadVersion();
    TObject::Streamer(R__b);

    Int_t size ;
    TObject* arg ;

    R__b >> size ;
    while(size--) {
      R__b >> arg ;
      Add(arg) ;      
    }

    if (v>1) {
      R__b >> _name ;
    }

  } else {
    R__b.WriteVersion(RooLinkedList::IsA());
    TObject::Streamer(R__b);
    R__b << _size ;

    RooLinkedListElem* ptr = _first;
    while(ptr) {
      R__b << ptr->_arg ;
      ptr = ptr->_next ;
    } 

    R__b << _name ;
  }
}

 RooLinkedList.cxx:1
 RooLinkedList.cxx:2
 RooLinkedList.cxx:3
 RooLinkedList.cxx:4
 RooLinkedList.cxx:5
 RooLinkedList.cxx:6
 RooLinkedList.cxx:7
 RooLinkedList.cxx:8
 RooLinkedList.cxx:9
 RooLinkedList.cxx:10
 RooLinkedList.cxx:11
 RooLinkedList.cxx:12
 RooLinkedList.cxx:13
 RooLinkedList.cxx:14
 RooLinkedList.cxx:15
 RooLinkedList.cxx:16
 RooLinkedList.cxx:17
 RooLinkedList.cxx:18
 RooLinkedList.cxx:19
 RooLinkedList.cxx:20
 RooLinkedList.cxx:21
 RooLinkedList.cxx:22
 RooLinkedList.cxx:23
 RooLinkedList.cxx:24
 RooLinkedList.cxx:25
 RooLinkedList.cxx:26
 RooLinkedList.cxx:27
 RooLinkedList.cxx:28
 RooLinkedList.cxx:29
 RooLinkedList.cxx:30
 RooLinkedList.cxx:31
 RooLinkedList.cxx:32
 RooLinkedList.cxx:33
 RooLinkedList.cxx:34
 RooLinkedList.cxx:35
 RooLinkedList.cxx:36
 RooLinkedList.cxx:37
 RooLinkedList.cxx:38
 RooLinkedList.cxx:39
 RooLinkedList.cxx:40
 RooLinkedList.cxx:41
 RooLinkedList.cxx:42
 RooLinkedList.cxx:43
 RooLinkedList.cxx:44
 RooLinkedList.cxx:45
 RooLinkedList.cxx:46
 RooLinkedList.cxx:47
 RooLinkedList.cxx:48
 RooLinkedList.cxx:49
 RooLinkedList.cxx:50
 RooLinkedList.cxx:51
 RooLinkedList.cxx:52
 RooLinkedList.cxx:53
 RooLinkedList.cxx:54
 RooLinkedList.cxx:55
 RooLinkedList.cxx:56
 RooLinkedList.cxx:57
 RooLinkedList.cxx:58
 RooLinkedList.cxx:59
 RooLinkedList.cxx:60
 RooLinkedList.cxx:61
 RooLinkedList.cxx:62
 RooLinkedList.cxx:63
 RooLinkedList.cxx:64
 RooLinkedList.cxx:65
 RooLinkedList.cxx:66
 RooLinkedList.cxx:67
 RooLinkedList.cxx:68
 RooLinkedList.cxx:69
 RooLinkedList.cxx:70
 RooLinkedList.cxx:71
 RooLinkedList.cxx:72
 RooLinkedList.cxx:73
 RooLinkedList.cxx:74
 RooLinkedList.cxx:75
 RooLinkedList.cxx:76
 RooLinkedList.cxx:77
 RooLinkedList.cxx:78
 RooLinkedList.cxx:79
 RooLinkedList.cxx:80
 RooLinkedList.cxx:81
 RooLinkedList.cxx:82
 RooLinkedList.cxx:83
 RooLinkedList.cxx:84
 RooLinkedList.cxx:85
 RooLinkedList.cxx:86
 RooLinkedList.cxx:87
 RooLinkedList.cxx:88
 RooLinkedList.cxx:89
 RooLinkedList.cxx:90
 RooLinkedList.cxx:91
 RooLinkedList.cxx:92
 RooLinkedList.cxx:93
 RooLinkedList.cxx:94
 RooLinkedList.cxx:95
 RooLinkedList.cxx:96
 RooLinkedList.cxx:97
 RooLinkedList.cxx:98
 RooLinkedList.cxx:99
 RooLinkedList.cxx:100
 RooLinkedList.cxx:101
 RooLinkedList.cxx:102
 RooLinkedList.cxx:103
 RooLinkedList.cxx:104
 RooLinkedList.cxx:105
 RooLinkedList.cxx:106
 RooLinkedList.cxx:107
 RooLinkedList.cxx:108
 RooLinkedList.cxx:109
 RooLinkedList.cxx:110
 RooLinkedList.cxx:111
 RooLinkedList.cxx:112
 RooLinkedList.cxx:113
 RooLinkedList.cxx:114
 RooLinkedList.cxx:115
 RooLinkedList.cxx:116
 RooLinkedList.cxx:117
 RooLinkedList.cxx:118
 RooLinkedList.cxx:119
 RooLinkedList.cxx:120
 RooLinkedList.cxx:121
 RooLinkedList.cxx:122
 RooLinkedList.cxx:123
 RooLinkedList.cxx:124
 RooLinkedList.cxx:125
 RooLinkedList.cxx:126
 RooLinkedList.cxx:127
 RooLinkedList.cxx:128
 RooLinkedList.cxx:129
 RooLinkedList.cxx:130
 RooLinkedList.cxx:131
 RooLinkedList.cxx:132
 RooLinkedList.cxx:133
 RooLinkedList.cxx:134
 RooLinkedList.cxx:135
 RooLinkedList.cxx:136
 RooLinkedList.cxx:137
 RooLinkedList.cxx:138
 RooLinkedList.cxx:139
 RooLinkedList.cxx:140
 RooLinkedList.cxx:141
 RooLinkedList.cxx:142
 RooLinkedList.cxx:143
 RooLinkedList.cxx:144
 RooLinkedList.cxx:145
 RooLinkedList.cxx:146
 RooLinkedList.cxx:147
 RooLinkedList.cxx:148
 RooLinkedList.cxx:149
 RooLinkedList.cxx:150
 RooLinkedList.cxx:151
 RooLinkedList.cxx:152
 RooLinkedList.cxx:153
 RooLinkedList.cxx:154
 RooLinkedList.cxx:155
 RooLinkedList.cxx:156
 RooLinkedList.cxx:157
 RooLinkedList.cxx:158
 RooLinkedList.cxx:159
 RooLinkedList.cxx:160
 RooLinkedList.cxx:161
 RooLinkedList.cxx:162
 RooLinkedList.cxx:163
 RooLinkedList.cxx:164
 RooLinkedList.cxx:165
 RooLinkedList.cxx:166
 RooLinkedList.cxx:167
 RooLinkedList.cxx:168
 RooLinkedList.cxx:169
 RooLinkedList.cxx:170
 RooLinkedList.cxx:171
 RooLinkedList.cxx:172
 RooLinkedList.cxx:173
 RooLinkedList.cxx:174
 RooLinkedList.cxx:175
 RooLinkedList.cxx:176
 RooLinkedList.cxx:177
 RooLinkedList.cxx:178
 RooLinkedList.cxx:179
 RooLinkedList.cxx:180
 RooLinkedList.cxx:181
 RooLinkedList.cxx:182
 RooLinkedList.cxx:183
 RooLinkedList.cxx:184
 RooLinkedList.cxx:185
 RooLinkedList.cxx:186
 RooLinkedList.cxx:187
 RooLinkedList.cxx:188
 RooLinkedList.cxx:189
 RooLinkedList.cxx:190
 RooLinkedList.cxx:191
 RooLinkedList.cxx:192
 RooLinkedList.cxx:193
 RooLinkedList.cxx:194
 RooLinkedList.cxx:195
 RooLinkedList.cxx:196
 RooLinkedList.cxx:197
 RooLinkedList.cxx:198
 RooLinkedList.cxx:199
 RooLinkedList.cxx:200
 RooLinkedList.cxx:201
 RooLinkedList.cxx:202
 RooLinkedList.cxx:203
 RooLinkedList.cxx:204
 RooLinkedList.cxx:205
 RooLinkedList.cxx:206
 RooLinkedList.cxx:207
 RooLinkedList.cxx:208
 RooLinkedList.cxx:209
 RooLinkedList.cxx:210
 RooLinkedList.cxx:211
 RooLinkedList.cxx:212
 RooLinkedList.cxx:213
 RooLinkedList.cxx:214
 RooLinkedList.cxx:215
 RooLinkedList.cxx:216
 RooLinkedList.cxx:217
 RooLinkedList.cxx:218
 RooLinkedList.cxx:219
 RooLinkedList.cxx:220
 RooLinkedList.cxx:221
 RooLinkedList.cxx:222
 RooLinkedList.cxx:223
 RooLinkedList.cxx:224
 RooLinkedList.cxx:225
 RooLinkedList.cxx:226
 RooLinkedList.cxx:227
 RooLinkedList.cxx:228
 RooLinkedList.cxx:229
 RooLinkedList.cxx:230
 RooLinkedList.cxx:231
 RooLinkedList.cxx:232
 RooLinkedList.cxx:233
 RooLinkedList.cxx:234
 RooLinkedList.cxx:235
 RooLinkedList.cxx:236
 RooLinkedList.cxx:237
 RooLinkedList.cxx:238
 RooLinkedList.cxx:239
 RooLinkedList.cxx:240
 RooLinkedList.cxx:241
 RooLinkedList.cxx:242
 RooLinkedList.cxx:243
 RooLinkedList.cxx:244
 RooLinkedList.cxx:245
 RooLinkedList.cxx:246
 RooLinkedList.cxx:247
 RooLinkedList.cxx:248
 RooLinkedList.cxx:249
 RooLinkedList.cxx:250
 RooLinkedList.cxx:251
 RooLinkedList.cxx:252
 RooLinkedList.cxx:253
 RooLinkedList.cxx:254
 RooLinkedList.cxx:255
 RooLinkedList.cxx:256
 RooLinkedList.cxx:257
 RooLinkedList.cxx:258
 RooLinkedList.cxx:259
 RooLinkedList.cxx:260
 RooLinkedList.cxx:261
 RooLinkedList.cxx:262
 RooLinkedList.cxx:263
 RooLinkedList.cxx:264
 RooLinkedList.cxx:265
 RooLinkedList.cxx:266
 RooLinkedList.cxx:267
 RooLinkedList.cxx:268
 RooLinkedList.cxx:269
 RooLinkedList.cxx:270
 RooLinkedList.cxx:271
 RooLinkedList.cxx:272
 RooLinkedList.cxx:273
 RooLinkedList.cxx:274
 RooLinkedList.cxx:275
 RooLinkedList.cxx:276
 RooLinkedList.cxx:277
 RooLinkedList.cxx:278
 RooLinkedList.cxx:279
 RooLinkedList.cxx:280
 RooLinkedList.cxx:281
 RooLinkedList.cxx:282
 RooLinkedList.cxx:283
 RooLinkedList.cxx:284
 RooLinkedList.cxx:285
 RooLinkedList.cxx:286
 RooLinkedList.cxx:287
 RooLinkedList.cxx:288
 RooLinkedList.cxx:289
 RooLinkedList.cxx:290
 RooLinkedList.cxx:291
 RooLinkedList.cxx:292
 RooLinkedList.cxx:293
 RooLinkedList.cxx:294
 RooLinkedList.cxx:295
 RooLinkedList.cxx:296
 RooLinkedList.cxx:297
 RooLinkedList.cxx:298
 RooLinkedList.cxx:299
 RooLinkedList.cxx:300
 RooLinkedList.cxx:301
 RooLinkedList.cxx:302
 RooLinkedList.cxx:303
 RooLinkedList.cxx:304
 RooLinkedList.cxx:305
 RooLinkedList.cxx:306
 RooLinkedList.cxx:307
 RooLinkedList.cxx:308
 RooLinkedList.cxx:309
 RooLinkedList.cxx:310
 RooLinkedList.cxx:311
 RooLinkedList.cxx:312
 RooLinkedList.cxx:313
 RooLinkedList.cxx:314
 RooLinkedList.cxx:315
 RooLinkedList.cxx:316
 RooLinkedList.cxx:317
 RooLinkedList.cxx:318
 RooLinkedList.cxx:319
 RooLinkedList.cxx:320
 RooLinkedList.cxx:321
 RooLinkedList.cxx:322
 RooLinkedList.cxx:323
 RooLinkedList.cxx:324
 RooLinkedList.cxx:325
 RooLinkedList.cxx:326
 RooLinkedList.cxx:327
 RooLinkedList.cxx:328
 RooLinkedList.cxx:329
 RooLinkedList.cxx:330
 RooLinkedList.cxx:331
 RooLinkedList.cxx:332
 RooLinkedList.cxx:333
 RooLinkedList.cxx:334
 RooLinkedList.cxx:335
 RooLinkedList.cxx:336
 RooLinkedList.cxx:337
 RooLinkedList.cxx:338
 RooLinkedList.cxx:339
 RooLinkedList.cxx:340
 RooLinkedList.cxx:341
 RooLinkedList.cxx:342
 RooLinkedList.cxx:343
 RooLinkedList.cxx:344
 RooLinkedList.cxx:345
 RooLinkedList.cxx:346
 RooLinkedList.cxx:347
 RooLinkedList.cxx:348
 RooLinkedList.cxx:349
 RooLinkedList.cxx:350
 RooLinkedList.cxx:351
 RooLinkedList.cxx:352
 RooLinkedList.cxx:353
 RooLinkedList.cxx:354
 RooLinkedList.cxx:355
 RooLinkedList.cxx:356
 RooLinkedList.cxx:357
 RooLinkedList.cxx:358
 RooLinkedList.cxx:359
 RooLinkedList.cxx:360
 RooLinkedList.cxx:361
 RooLinkedList.cxx:362
 RooLinkedList.cxx:363
 RooLinkedList.cxx:364
 RooLinkedList.cxx:365
 RooLinkedList.cxx:366
 RooLinkedList.cxx:367
 RooLinkedList.cxx:368
 RooLinkedList.cxx:369
 RooLinkedList.cxx:370
 RooLinkedList.cxx:371
 RooLinkedList.cxx:372
 RooLinkedList.cxx:373
 RooLinkedList.cxx:374
 RooLinkedList.cxx:375
 RooLinkedList.cxx:376
 RooLinkedList.cxx:377
 RooLinkedList.cxx:378
 RooLinkedList.cxx:379
 RooLinkedList.cxx:380
 RooLinkedList.cxx:381
 RooLinkedList.cxx:382
 RooLinkedList.cxx:383
 RooLinkedList.cxx:384
 RooLinkedList.cxx:385
 RooLinkedList.cxx:386
 RooLinkedList.cxx:387
 RooLinkedList.cxx:388
 RooLinkedList.cxx:389
 RooLinkedList.cxx:390
 RooLinkedList.cxx:391
 RooLinkedList.cxx:392
 RooLinkedList.cxx:393
 RooLinkedList.cxx:394
 RooLinkedList.cxx:395
 RooLinkedList.cxx:396
 RooLinkedList.cxx:397
 RooLinkedList.cxx:398
 RooLinkedList.cxx:399
 RooLinkedList.cxx:400
 RooLinkedList.cxx:401
 RooLinkedList.cxx:402
 RooLinkedList.cxx:403
 RooLinkedList.cxx:404
 RooLinkedList.cxx:405
 RooLinkedList.cxx:406
 RooLinkedList.cxx:407
 RooLinkedList.cxx:408
 RooLinkedList.cxx:409
 RooLinkedList.cxx:410
 RooLinkedList.cxx:411
 RooLinkedList.cxx:412
 RooLinkedList.cxx:413
 RooLinkedList.cxx:414
 RooLinkedList.cxx:415
 RooLinkedList.cxx:416
 RooLinkedList.cxx:417
 RooLinkedList.cxx:418
 RooLinkedList.cxx:419
 RooLinkedList.cxx:420
 RooLinkedList.cxx:421
 RooLinkedList.cxx:422
 RooLinkedList.cxx:423
 RooLinkedList.cxx:424
 RooLinkedList.cxx:425
 RooLinkedList.cxx:426
 RooLinkedList.cxx:427
 RooLinkedList.cxx:428
 RooLinkedList.cxx:429
 RooLinkedList.cxx:430
 RooLinkedList.cxx:431
 RooLinkedList.cxx:432
 RooLinkedList.cxx:433
 RooLinkedList.cxx:434
 RooLinkedList.cxx:435
 RooLinkedList.cxx:436
 RooLinkedList.cxx:437
 RooLinkedList.cxx:438
 RooLinkedList.cxx:439
 RooLinkedList.cxx:440
 RooLinkedList.cxx:441
 RooLinkedList.cxx:442
 RooLinkedList.cxx:443
 RooLinkedList.cxx:444
 RooLinkedList.cxx:445
 RooLinkedList.cxx:446
 RooLinkedList.cxx:447
 RooLinkedList.cxx:448
 RooLinkedList.cxx:449
 RooLinkedList.cxx:450
 RooLinkedList.cxx:451
 RooLinkedList.cxx:452
 RooLinkedList.cxx:453
 RooLinkedList.cxx:454
 RooLinkedList.cxx:455
 RooLinkedList.cxx:456
 RooLinkedList.cxx:457
 RooLinkedList.cxx:458
 RooLinkedList.cxx:459
 RooLinkedList.cxx:460
 RooLinkedList.cxx:461
 RooLinkedList.cxx:462
 RooLinkedList.cxx:463
 RooLinkedList.cxx:464
 RooLinkedList.cxx:465
 RooLinkedList.cxx:466
 RooLinkedList.cxx:467
 RooLinkedList.cxx:468
 RooLinkedList.cxx:469
 RooLinkedList.cxx:470
 RooLinkedList.cxx:471
 RooLinkedList.cxx:472
 RooLinkedList.cxx:473
 RooLinkedList.cxx:474
 RooLinkedList.cxx:475
 RooLinkedList.cxx:476
 RooLinkedList.cxx:477
 RooLinkedList.cxx:478
 RooLinkedList.cxx:479
 RooLinkedList.cxx:480
 RooLinkedList.cxx:481
 RooLinkedList.cxx:482
 RooLinkedList.cxx:483
 RooLinkedList.cxx:484
 RooLinkedList.cxx:485
 RooLinkedList.cxx:486
 RooLinkedList.cxx:487
 RooLinkedList.cxx:488
 RooLinkedList.cxx:489
 RooLinkedList.cxx:490
 RooLinkedList.cxx:491
 RooLinkedList.cxx:492
 RooLinkedList.cxx:493
 RooLinkedList.cxx:494
 RooLinkedList.cxx:495
 RooLinkedList.cxx:496
 RooLinkedList.cxx:497
 RooLinkedList.cxx:498
 RooLinkedList.cxx:499
 RooLinkedList.cxx:500
 RooLinkedList.cxx:501
 RooLinkedList.cxx:502
 RooLinkedList.cxx:503
 RooLinkedList.cxx:504
 RooLinkedList.cxx:505
 RooLinkedList.cxx:506
 RooLinkedList.cxx:507
 RooLinkedList.cxx:508
 RooLinkedList.cxx:509
 RooLinkedList.cxx:510
 RooLinkedList.cxx:511
 RooLinkedList.cxx:512
 RooLinkedList.cxx:513
 RooLinkedList.cxx:514
 RooLinkedList.cxx:515
 RooLinkedList.cxx:516
 RooLinkedList.cxx:517
 RooLinkedList.cxx:518
 RooLinkedList.cxx:519
 RooLinkedList.cxx:520
 RooLinkedList.cxx:521
 RooLinkedList.cxx:522
 RooLinkedList.cxx:523
 RooLinkedList.cxx:524
 RooLinkedList.cxx:525
 RooLinkedList.cxx:526
 RooLinkedList.cxx:527
 RooLinkedList.cxx:528
 RooLinkedList.cxx:529
 RooLinkedList.cxx:530
 RooLinkedList.cxx:531
 RooLinkedList.cxx:532
 RooLinkedList.cxx:533
 RooLinkedList.cxx:534
 RooLinkedList.cxx:535
 RooLinkedList.cxx:536
 RooLinkedList.cxx:537
 RooLinkedList.cxx:538
 RooLinkedList.cxx:539
 RooLinkedList.cxx:540
 RooLinkedList.cxx:541
 RooLinkedList.cxx:542
 RooLinkedList.cxx:543
 RooLinkedList.cxx:544
 RooLinkedList.cxx:545
 RooLinkedList.cxx:546
 RooLinkedList.cxx:547
 RooLinkedList.cxx:548
 RooLinkedList.cxx:549
 RooLinkedList.cxx:550
 RooLinkedList.cxx:551
 RooLinkedList.cxx:552
 RooLinkedList.cxx:553
 RooLinkedList.cxx:554
 RooLinkedList.cxx:555
 RooLinkedList.cxx:556
 RooLinkedList.cxx:557
 RooLinkedList.cxx:558
 RooLinkedList.cxx:559
 RooLinkedList.cxx:560
 RooLinkedList.cxx:561
 RooLinkedList.cxx:562
 RooLinkedList.cxx:563
 RooLinkedList.cxx:564
 RooLinkedList.cxx:565
 RooLinkedList.cxx:566
 RooLinkedList.cxx:567
 RooLinkedList.cxx:568
 RooLinkedList.cxx:569
 RooLinkedList.cxx:570
 RooLinkedList.cxx:571
 RooLinkedList.cxx:572
 RooLinkedList.cxx:573
 RooLinkedList.cxx:574
 RooLinkedList.cxx:575
 RooLinkedList.cxx:576