// @(#)root/io:$Id$
// Author: Markus Frank 28/10/04

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGenCollectionProxy
//
// Proxy around an arbitrary container, which implements basic
// functionality and iteration.
//
// In particular this is used to implement splitting and abstract
// element access of any container. Access to compiled code is necessary
// to implement the abstract iteration sequence and functionality like
// size(), clear(), resize(). resize() may be a void operation.
//
//////////////////////////////////////////////////////////////////////////

#include "TGenCollectionProxy.h"
#include "TVirtualStreamerInfo.h"
#include "TStreamerElement.h"
#include "TClassEdit.h"
#include "TClass.h"
#include "TError.h"
#include "TROOT.h"
#include "TInterpreter.h"
#include "Riostream.h"
#include "TVirtualMutex.h"
#include "TStreamerInfoActions.h"
#include "THashTable.h"
#include "THashList.h"
#include <stdlib.h>

#include "TInterpreter.h" // For gInterpreterMutex

#define MESSAGE(which,text)

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  class TGenVectorProxy
//
//   Local optimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenVectorProxy : public TGenCollectionProxy {
public:
   // Standard Destructor
   TGenVectorProxy(const TGenCollectionProxy& c) : TGenCollectionProxy(c)
   {
   }
   // Standard Destructor
   virtual ~TGenVectorProxy()
{
   }
   // Return the address of the value at index 'idx'
   virtual void* At(UInt_t idx)
{
      if ( fEnv && fEnv->fObject ) {
         fEnv->fIdx = idx;
         switch( idx ) {
         case 0:
            return fEnv->fStart = fFirst.invoke(fEnv);
         default:
            if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
            return ((char*)fEnv->fStart) + fValDiff*idx;
         }
      }
      Fatal("TGenVectorProxy","At> Logic error - no proxy object set.");
      return 0;
   }
   // Call to delete/destruct individual item
   virtual void DeleteItem(Bool_t force, void* ptr) const
   {
      if ( force && ptr ) {
         if ( fVal->fProperties&kNeedDelete) {
            TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
            TPushPop helper(proxy,ptr);
            proxy->Clear("force");
         }
         fVal->DeleteItem(ptr);
      }
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  class TGenVectorBoolProxy
//
//   Local optimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenVectorBoolProxy : public TGenCollectionProxy {
   Bool_t fLastValue;

public:
   TGenVectorBoolProxy(const TGenCollectionProxy& c) : TGenCollectionProxy(c), fLastValue(false)
   {
      // Standard Constructor.
   }
   virtual ~TGenVectorBoolProxy()
   {
      // Standard Destructor.
   }
   virtual void* At(UInt_t idx)
   {
      // Return the address of the value at index 'idx'

      // However we can 'take' the address of the content of std::vector<bool>.
      if ( fEnv && fEnv->fObject ) {
         switch( idx ) {
            case 0:
               fEnv->fStart = fFirst.invoke(fEnv);
               fEnv->fIdx = idx;
               break;
            default:
               fEnv->fIdx = idx - fEnv->fIdx;
               if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
               fNext.invoke(fEnv);
               fEnv->fIdx = idx;
               break;
         }
         typedef ROOT::TCollectionProxyInfo::Type<std::vector<Bool_t> >::Env_t EnvType_t;
         EnvType_t *e = (EnvType_t*)fEnv;
         fLastValue = *(e->iter());
         return &fLastValue;
      }
      Fatal("TGenVectorProxy","At> Logic error - no proxy object set.");
      return 0;
   }

   virtual void DeleteItem(Bool_t force, void* ptr) const
   {
      // Call to delete/destruct individual item
      if ( force && ptr ) {
         fVal->DeleteItem(ptr);
      }
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  class TGenBitsetProxy
//
//   Local optimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenBitsetProxy : public TGenCollectionProxy {

public:
   TGenBitsetProxy(const TGenCollectionProxy& c) : TGenCollectionProxy(c)
   {
      // Standard Constructor.
   }
   virtual ~TGenBitsetProxy()
   {
      // Standard Destructor.
   }
   virtual void* At(UInt_t idx)
   {
      // Return the address of the value at index 'idx'

      // However we can 'take' the address of the content of std::vector<bool>.
      if ( fEnv && fEnv->fObject ) {
         switch( idx ) {
            case 0:
               fEnv->fStart = fFirst.invoke(fEnv);
               fEnv->fIdx = idx;
               break;
            default:
               fEnv->fIdx = idx - fEnv->fIdx;
               if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
               fNext.invoke(fEnv);
               fEnv->fIdx = idx;
               break;
         }
         typedef ROOT::TCollectionProxyInfo::Environ<std::pair<size_t,Bool_t> > EnvType_t;
         EnvType_t *e = (EnvType_t*)fEnv;
         return &(e->fIterator.second);
      }
      Fatal("TGenVectorProxy","At> Logic error - no proxy object set.");
      return 0;
   }

   virtual void DeleteItem(Bool_t force, void* ptr) const
   {
      // Call to delete/destruct individual item
      if ( force && ptr ) {
         fVal->DeleteItem(ptr);
      }
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  class TGenListProxy
//
//   Localoptimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenListProxy : public TGenVectorProxy {
public:
   // Standard Destructor
   TGenListProxy(const TGenCollectionProxy& c) : TGenVectorProxy(c)
{
   }
   // Standard Destructor
   virtual ~TGenListProxy()
{
   }
   // Return the address of the value at index 'idx'
   void* At(UInt_t idx)
{
      if ( fEnv && fEnv->fObject ) {
         switch( idx ) {
         case 0:
            fEnv->fIdx = idx;
            return fEnv->fStart = fFirst.invoke(fEnv);
         default:  {
            fEnv->fIdx = idx - fEnv->fIdx;
            if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
            void* result = fNext.invoke(fEnv);
            fEnv->fIdx = idx;
            return result;
         }
         }
      }
      Fatal("TGenListProxy","At> Logic error - no proxy object set.");
      return 0;
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// class TGenSetProxy
//
//   Localoptimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenSetProxy : public TGenVectorProxy {
public:
   // Standard Destructor
   TGenSetProxy(const TGenCollectionProxy& c) : TGenVectorProxy(c)
{
   }
   // Standard Destructor
   virtual ~TGenSetProxy()
{
   }
   // Return the address of the value at index 'idx'
   void* At(UInt_t idx)
{
      if ( fEnv && fEnv->fObject ) {
         if ( fEnv->fUseTemp ) {
            return (((char*)fEnv->fTemp)+idx*fValDiff);
         }
         switch( idx ) {
         case 0:
            fEnv->fIdx = idx;
            return fEnv->fStart = fFirst.invoke(fEnv);
         default:  {
            fEnv->fIdx = idx - fEnv->fIdx;
            if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
            void* result = fNext.invoke(fEnv);
            fEnv->fIdx = idx;
            return result;
         }
         }
      }
      Fatal("TGenSetProxy","At> Logic error - no proxy object set.");
      return 0;
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  class TGenMapProxy
//
//   Localoptimization class.
//
//   Collection proxies get copied. On copy we switch the type of the
//   proxy to the concrete STL type. The concrete types are optimized
//   for element access.
//
//////////////////////////////////////////////////////////////////////////
class TGenMapProxy : public TGenSetProxy {
public:
   // Standard Destructor
   TGenMapProxy(const TGenCollectionProxy& c) : TGenSetProxy(c)
{
   }
   // Standard Destructor
   virtual ~TGenMapProxy()
{
   }
   // Call to delete/destruct individual item
   virtual void DeleteItem(Bool_t force, void* ptr) const
   {
      if (force) {
         if ( fKey->fProperties&kNeedDelete) {
            TVirtualCollectionProxy *proxy = fKey->fType->GetCollectionProxy();
            TPushPop helper(proxy,fKey->fCase&kIsPointer ? *(void**)ptr : ptr);
            proxy->Clear("force");
         }
         if ( fVal->fProperties&kNeedDelete) {
            TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
            char *addr = ((char*)ptr)+fValOffset;
            TPushPop helper(proxy,fVal->fCase&kIsPointer ? *(void**)addr : addr);
            proxy->Clear("force");
         }
      }
      if ( fKey->fCase&kIsPointer ) {
         fKey->DeleteItem(*(void**)ptr);
      }
      if ( fVal->fCase&kIsPointer ) {
         char *addr = ((char*)ptr)+fValOffset;
         fVal->DeleteItem(*(void**)addr);
      }
   }
};

//______________________________________________________________________________
TGenCollectionProxy::Value::Value(const std::string& inside_type, Bool_t silent)
{
   // Constructor.

   std::string inside = (inside_type.find("const ")==0) ? inside_type.substr(6) : inside_type;
   fCase = 0;
   fProperties = 0;
   fCtor = 0;
   fDtor = 0;
   fDelete = 0;
   fSize = std::string::npos;
   fKind = kNoType_t;
   std::string intype = TClassEdit::ShortType(inside.c_str(),TClassEdit::kDropTrailStar );
   if ( inside.substr(0,6) == "string" || inside.substr(0,11) == "std::string" ) {
      fCase = kBIT_ISSTRING;
      fType = TClass::GetClass("string");
      fCtor = fType->GetNew();
      fDtor = fType->GetDestructor();
      fDelete = fType->GetDelete();
      switch(inside[inside.length()-1]) {
      case '*':
         fCase |= kIsPointer;
         fSize = sizeof(void*);
         break;
      default:
         fSize = sizeof(std::string);
         break;
      }
   }
   else {
      // In the case where we have an emulated class,
      // if the class is nested (in a class or a namespace),
      // calling G__TypeInfo ti(inside.c_str());
      // might fail because CINT does not known the nesting
      // scope, so let's first look for an emulated class:

      fType = TClass::GetClass(intype.c_str(),kTRUE,silent);

      if (fType) {
         if (intype != inside) {
            fCase |= kIsPointer;
            fSize = sizeof(void*);
            if (fType == TString::Class()) {
               fCase |= kBIT_ISTSTRING;
            }
         }
         fCase  |= kIsClass;
         fCtor   = fType->GetNew();
         fDtor   = fType->GetDestructor();
         fDelete = fType->GetDelete();
      } else {
         R__LOCKGUARD2(gInterpreterMutex);

         // Try to avoid autoparsing.

         THashTable *typeTable = dynamic_cast<THashTable*>( gROOT->GetListOfTypes() );
         THashList *enumTable = dynamic_cast<THashList*>( gROOT->GetListOfEnums() );

         assert(typeTable && "The type of the list of type has changed");
         assert(enumTable && "The type of the list of enum has changed");

         TDataType *fundType = (TDataType *)typeTable->THashTable::FindObject( intype.c_str() );
         if (fundType && fundType->GetType() < 0x17 && fundType->GetType() > 0) {
            fKind = (EDataType)fundType->GetType();
            if ( 0 == strcmp("bool",fundType->GetFullTypeName()) ) {
               fKind = (EDataType)kBOOL_t;
            }
            // R__ASSERT((fKind>0 && fKind<0x17) || (fKind==-1&&(prop&kIsPointer)) );

            fCase |= kIsFundamental;
            if (intype != inside) {
               fCase |= kIsPointer;
               fSize = sizeof(void*);
            } else {
               fSize = fundType->Size();
            }
         } else if (enumTable->THashList::FindObject( intype.c_str() ) ) {
            // This is a known enum.
            fCase = kIsEnum;
            fSize = sizeof(Int_t);
            fKind = kInt_t;
            if (intype != inside) {
               fCase |= kIsPointer;
               fSize = sizeof(void*);
            }
         } else {
            // This fallback solution should be hardly used ...
            // One of the common use case is to 'discover' that this is a
            // collection for the content of which we do not have a dictionary
            // which can happen at least in the following cases:
            //    - empty emulated collection
            //    - emulated collection of enums
            // In those two cases there is no StreamerInfo stored in the file
            // for the content.

            // R__ASSERT("FallBack, should be hardly used.");

            TypeInfo_t *ti = gCling->TypeInfo_Factory();
            gCling->TypeInfo_Init(ti,inside.c_str());
            if ( !gCling->TypeInfo_IsValid(ti) ) {
               if (intype != inside) {
                  fCase |= kIsPointer;
                  fSize = sizeof(void*);
               }
               // Since we already search for GetClass earlier, this should
               // never be true.
//               fType = TClass::GetClass(intype.c_str(),kTRUE,silent);
//               if (fType) {
//                  fCase  |= kIsClass;
//                  fCtor   = fType->GetNew();
//                  fDtor   = fType->GetDestructor();
//                  fDelete = fType->GetDelete();
//               }
//               else {
                  // either we have an Emulated enum or a really unknown class!
                  // let's just claim its an enum :(
                  fCase = kIsEnum;
                  fSize = sizeof(Int_t);
                  fKind = kInt_t;
//               }
            }
            else {
               Long_t prop = gCling->TypeInfo_Property(ti);
               if ( prop&kIsPointer ) {
                  fSize = sizeof(void*);
               }
               if ( prop&kIsStruct ) {
                  prop |= kIsClass;
               }
               // Since we already searched GetClass earlier, this should
               // never be true.
               R__ASSERT(! (prop&kIsClass) && "Impossible code path" );
//               if ( prop&kIsClass ) {
//                  fType = TClass::GetClass(intype.c_str(),kTRUE,silent);
//                  R__ASSERT(fType);
//                  fCtor   = fType->GetNew();
//                  fDtor   = fType->GetDestructor();
//                  fDelete = fType->GetDelete();
//               }
//               else
               if ( prop&kIsFundamental ) {
                  fundType = gROOT->GetType( intype.c_str() );
                  if (fundType==0) {
                     if (intype != "long double") {
                        Error("TGenCollectionProxy","Unknown fundamental type %s",intype.c_str());
                     }
                     fSize = sizeof(int);
                     fKind = kInt_t;
                  } else {
                     fKind = (EDataType)fundType->GetType();
                     if ( 0 == strcmp("bool",fundType->GetFullTypeName()) ) {
                        fKind = (EDataType)kBOOL_t;
                     }
                     fSize = gCling->TypeInfo_Size(ti);
                     R__ASSERT((fKind>0 && fKind<0x17) || (fKind==-1&&(prop&kIsPointer)) );
                  }
               }
               else if ( prop&kIsEnum ) {
                  fSize = sizeof(int);
                  fKind = kInt_t;
               }
               fCase = prop & (kIsPointer|kIsFundamental|kIsEnum|kIsClass);
               if (fType == TString::Class() && (fCase&kIsPointer)) {
                  fCase |= kBIT_ISTSTRING;
               }
            }
            gCling->TypeInfo_Delete(ti);
         }
      }
      if (fType) {
         TVirtualCollectionProxy *proxy = fType->GetCollectionProxy();
         if (proxy && (proxy->GetProperties() & kNeedDelete)) {
            fProperties |= kNeedDelete;
         }
      }
   }
   if ( fSize == std::string::npos ) {
      if ( fType == 0 ) {
         // The caller should check the validity by calling IsValid()
      } else {
         fSize = fType->Size();
      }
   }
}

Bool_t TGenCollectionProxy::Value::IsValid()
{
   // Return true if the Value has been properly initialized.

   return fSize != std::string::npos;
}

void TGenCollectionProxy::Value::DeleteItem(void* ptr)
{
   // Delete an item.

   if ( ptr && fCase&kIsPointer ) {
      if ( fDelete ) {
         (*fDelete)(ptr);
      }
      else if ( fType ) {
         fType->Destructor(ptr);
      }
      else {
         ::operator delete(ptr);
      }
   }
}

//______________________________________________________________________________
TGenCollectionProxy::TGenCollectionProxy(const TGenCollectionProxy& copy)
   : TVirtualCollectionProxy(copy.fClass),
     fTypeinfo(copy.fTypeinfo)
{
   // Build a proxy for an emulated container.
   fEnv            = 0;
   fName           = copy.fName;
   fPointers       = copy.fPointers;
   fSTL_type       = copy.fSTL_type;
   fSize.call      = copy.fSize.call;
   fNext.call      = copy.fNext.call;
   fFirst.call     = copy.fFirst.call;
   fClear.call     = copy.fClear.call;
   fResize         = copy.fResize;
   fDestruct       = copy.fDestruct;
   fConstruct      = copy.fConstruct;
   fFeed           = copy.fFeed;
   fCollect        = copy.fCollect;
   fCreateEnv.call = copy.fCreateEnv.call;
   fValOffset      = copy.fValOffset;
   fValDiff        = copy.fValDiff;
   fValue          = copy.fValue ? new Value(*copy.fValue) : 0;
   fVal            = copy.fVal   ? new Value(*copy.fVal)   : 0;
   fKey            = copy.fKey   ? new Value(*copy.fKey)   : 0;
   fOnFileClass    = copy.fOnFileClass;
   fReadMemberWise = new TObjArray(TCollection::kInitCapacity,-1);
   fConversionReadMemberWise = 0;
   fWriteMemberWise = 0;
   fProperties     = copy.fProperties;
   fFunctionCreateIterators    = copy.fFunctionCreateIterators;
   fFunctionCopyIterator       = copy.fFunctionCopyIterator;
   fFunctionNextIterator       = copy.fFunctionNextIterator;
   fFunctionDeleteIterator     = copy.fFunctionDeleteIterator;
   fFunctionDeleteTwoIterators = copy.fFunctionDeleteTwoIterators;
}

//______________________________________________________________________________
TGenCollectionProxy::TGenCollectionProxy(Info_t info, size_t iter_size)
   : TVirtualCollectionProxy(0),
     fTypeinfo(info)
{
   // Build a proxy for a collection whose type is described by 'collectionClass'.
   fEnv             = 0;
   fSize.call       = 0;
   fFirst.call      = 0;
   fNext.call       = 0;
   fClear.call      = 0;
   fResize          = 0;
   fDestruct        = 0;
   fConstruct       = 0;
   fCollect         = 0;
   fCreateEnv.call  = 0;
   fFeed            = 0;
   fValue           = 0;
   fKey             = 0;
   fVal             = 0;
   fValOffset       = 0;
   fValDiff         = 0;
   fPointers        = false;
   fOnFileClass     = 0;
   fSTL_type        = ROOT::kNotSTL;
   Env_t e;
   if ( iter_size > sizeof(e.fIterator) ) {
      Fatal("TGenCollectionProxy",
            "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
            "Iterators for collection",
            fClass->GetName(),
            (Long_t)iter_size,
            (Long_t)sizeof(e.fIterator));
   }
   fReadMemberWise = new TObjArray(TCollection::kInitCapacity,-1);
   fConversionReadMemberWise   = 0;
   fWriteMemberWise            = 0;
   fFunctionCreateIterators    = 0;
   fFunctionCopyIterator       = 0;
   fFunctionNextIterator       = 0;
   fFunctionDeleteIterator     = 0;
   fFunctionDeleteTwoIterators = 0;
}

//______________________________________________________________________________
TGenCollectionProxy::TGenCollectionProxy(const ROOT::TCollectionProxyInfo &info, TClass *cl)
   : TVirtualCollectionProxy(cl),
     fTypeinfo(info.fInfo), fOnFileClass(0)
{
   // Build a proxy for a collection whose type is described by 'collectionClass'.
   fEnv            = 0;
   fValDiff        = info.fValueDiff;
   fValOffset      = info.fValueOffset;
   fSize.call      = info.fSizeFunc;
   fResize         = info.fResizeFunc;
   fNext.call      = info.fNextFunc;
   fFirst.call     = info.fFirstFunc;
   fClear.call     = info.fClearFunc;
   fConstruct      = info.fConstructFunc;
   fDestruct       = info.fDestructFunc;
   fFeed           = info.fFeedFunc;
   fCollect        = info.fCollectFunc;
   fCreateEnv.call = info.fCreateEnv;

   if (cl) {
      fName = cl->GetName();
   }
   CheckFunctions();

   fValue           = 0;
   fKey             = 0;
   fVal             = 0;
   fPointers        = false;
   fSTL_type        = ROOT::kNotSTL;

   Env_t e;
   if ( info.fIterSize > sizeof(e.fIterator) ) {
      Fatal("TGenCollectionProxy",
            "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
            "Iterators for collection",
            fClass->GetName(),
            (Long_t)info.fIterSize,
            (Long_t)sizeof(e.fIterator));
   }
   fReadMemberWise = new TObjArray(TCollection::kInitCapacity,-1);
   fConversionReadMemberWise   = 0;
   fWriteMemberWise            = 0;
   fFunctionCreateIterators    = info.fCreateIterators;
   fFunctionCopyIterator       = info.fCopyIterator;
   fFunctionNextIterator       = info.fNext;
   fFunctionDeleteIterator     = info.fDeleteSingleIterator;
   fFunctionDeleteTwoIterators = info.fDeleteTwoIterators;
}

namespace {
   template <class vec>
   void clearVector(vec& v)
   {
      // Clear out the proxies.

      for(typename vec::iterator i=v.begin(); i != v.end(); ++i) {
         typename vec::value_type e = *i;
         if ( e ) {
            delete e;
         }
      }
      v.clear();
   }
}
//______________________________________________________________________________
TGenCollectionProxy::~TGenCollectionProxy()
{
   // Standard destructor
   clearVector(fProxyList);
   clearVector(fProxyKept);
   clearVector(fStaged);

   if ( fValue ) delete fValue.load();
   if ( fVal   ) delete fVal;
   if ( fKey   ) delete fKey;

   delete fReadMemberWise;
   if (fConversionReadMemberWise) {
      std::map<std::string, TObjArray*>::iterator it;
      std::map<std::string, TObjArray*>::iterator end = fConversionReadMemberWise->end();
      for( it = fConversionReadMemberWise->begin(); it != end; ++it ) {
         delete it->second;
      }
      delete fConversionReadMemberWise;
      fConversionReadMemberWise = 0;
   }
   delete fWriteMemberWise;
}

//______________________________________________________________________________
TVirtualCollectionProxy* TGenCollectionProxy::Generate() const
{
   // Virtual copy constructor
   if ( !fValue ) Initialize(kFALSE);

   if( fPointers )
      return new TGenCollectionProxy(*this);

   switch(fSTL_type) {
      case ROOT::kSTLbitset: {
         return new TGenBitsetProxy(*this);
      }
      case ROOT::kSTLvector: {
         if ((*fValue).fKind == (EDataType)kBOOL_t) {
            return new TGenVectorBoolProxy(*this);
         } else {
            return new TGenVectorProxy(*this);
         }
      }
      case ROOT::kSTLlist:
         return new TGenListProxy(*this);
      case ROOT::kSTLmap:
      case ROOT::kSTLmultimap:
         return new TGenMapProxy(*this);
      case ROOT::kSTLset:
      case ROOT::kSTLmultiset:
         return new TGenSetProxy(*this);
      default:
         return new TGenCollectionProxy(*this);
   }
}

//______________________________________________________________________________
TGenCollectionProxy *TGenCollectionProxy::Initialize(Bool_t silent) const
{
   // Proxy initializer
   TGenCollectionProxy* p = const_cast<TGenCollectionProxy*>(this);
   if ( fValue ) return p;
   return p->InitializeEx(silent);
}

//______________________________________________________________________________
void TGenCollectionProxy::CheckFunctions() const
{
   // Check existence of function pointers
   if ( 0 == fSize.call ) {
      Fatal("TGenCollectionProxy","No 'size' function pointer for class %s present.",fName.c_str());
   }
   if ( 0 == fResize ) {
      Fatal("TGenCollectionProxy","No 'resize' function for class %s present.",fName.c_str());
   }
   if ( 0 == fNext.call  ) {
      Fatal("TGenCollectionProxy","No 'next' function for class %s present.",fName.c_str());
   }
   if ( 0 == fFirst.call ) {
      Fatal("TGenCollectionProxy","No 'begin' function for class %s present.",fName.c_str());
   }
   if ( 0 == fClear.call ) {
      Fatal("TGenCollectionProxy","No 'clear' function for class %s present.",fName.c_str());
   }
   if ( 0 == fConstruct ) {
      Fatal("TGenCollectionProxy","No 'block constructor' function for class %s present.",fName.c_str());
   }
   if ( 0 == fDestruct ) {
      Fatal("TGenCollectionProxy","No 'block destructor' function for class %s present.",fName.c_str());
   }
   if ( 0 == fFeed ) {
      Fatal("TGenCollectionProxy","No 'data feed' function for class %s present.",fName.c_str());
   }
   if ( 0 == fCollect ) {
      Fatal("TGenCollectionProxy","No 'data collect' function for class %s present.",fName.c_str());
   }
   if (0 == fCreateEnv.call ) {
      Fatal("TGenCollectionProxy","No 'environment creation' function for class %s present.",fName.c_str());
   }
}

//______________________________________________________________________________
static TGenCollectionProxy::Value *R__CreateValue(const std::string &name, Bool_t silent)
{
   // Utility routine to issue a Fatal error is the Value object is not valid
   TGenCollectionProxy::Value *val = new TGenCollectionProxy::Value( name, silent );
   if ( !val->IsValid() ) {
      Fatal("TGenCollectionProxy","Could not find %s!",name.c_str());
   }
   return val;
}

//______________________________________________________________________________
TGenCollectionProxy *TGenCollectionProxy::InitializeEx(Bool_t silent)
{
   // Proxy initializer
   R__LOCKGUARD2(gInterpreterMutex);
   if (fValue) return this;

   TClass *cl = fClass ? fClass.GetClass() : TClass::GetClass(fTypeinfo,kTRUE,silent);
   if ( cl ) {
      fEnv    = 0;
      fName   = cl->GetName();
      fPointers   = false;
      int nested = 0;
      std::vector<std::string> inside;
      int num = TClassEdit::GetSplit(cl->GetName(),inside,nested);
      if ( num > 1 ) {
         std::string nam;
         Value* newfValue = fValue;
         if ( inside[0].find("stdext::hash_") != std::string::npos )
            inside[0].replace(3,10,"::");
         if ( inside[0].find("__gnu_cxx::hash_") != std::string::npos )
            inside[0].replace(0,16,"std::");
         fSTL_type = TClassEdit::STLKind(inside[0].c_str());
         switch ( fSTL_type ) {
            case ROOT::kSTLmap:
            case ROOT::kSTLmultimap:
            case ROOT::kSTLset:
            case ROOT::kSTLmultiset:
            case ROOT::kSTLbitset: // not really an associate container but it has no real iterator.
               fProperties |= kIsAssociative;
               break;
         };

         int slong = sizeof(void*);
         switch ( fSTL_type ) {
            case ROOT::kSTLmap:
            case ROOT::kSTLmultimap:
               nam = "pair<"+inside[1]+","+inside[2];
               nam += (nam[nam.length()-1]=='>') ? " >" : ">";
               newfValue = R__CreateValue(nam, silent);

               fVal   = R__CreateValue(inside[2], silent);
               fKey   = R__CreateValue(inside[1], silent);
               fPointers = (0 != (fKey->fCase&kIsPointer));
               if (fPointers || (0 != (fKey->fProperties&kNeedDelete))) {
                  fProperties |= kNeedDelete;
               }
               if ( 0 == fValDiff ) {
                  fValDiff = fKey->fSize + fVal->fSize;
                  fValDiff += (slong - fKey->fSize%slong)%slong;
                  fValDiff += (slong - fValDiff%slong)%slong;
               }
               if ( 0 == fValOffset ) {
                  fValOffset = fKey->fSize;
                  fValOffset += (slong - fKey->fSize%slong)%slong;
               }
               break;
            case ROOT::kSTLbitset:
               inside[1] = "bool";
               // Intentional fall through
            default:
               newfValue = R__CreateValue(inside[1], silent);

               fVal   = new Value(*newfValue);
               if ( 0 == fValDiff ) {
                  fValDiff = fVal->fSize;
                  fValDiff += (slong - fValDiff%slong)%slong;
               }
               break;
         }

         fPointers = fPointers || (0 != (fVal->fCase&kIsPointer));
         if (fPointers || (0 != (fVal->fProperties&kNeedDelete))) {
            fProperties |= kNeedDelete;
         }
         fClass = cl;
         //fValue must be set last since we use it to indicate that we are initialized
         fValue = newfValue;
         return this;
      }
      Fatal("TGenCollectionProxy","Components of %s not analysed!",cl->GetName());
   }
   Fatal("TGenCollectionProxy","Collection class %s not found!",fTypeinfo.name());
   return 0;
}

//______________________________________________________________________________
TClass *TGenCollectionProxy::GetCollectionClass() const
{
   // Return a pointer to the TClass representing the container
   return fClass ? fClass : Initialize(kFALSE)->fClass;
}

//______________________________________________________________________________
Int_t TGenCollectionProxy::GetCollectionType() const
{
   // Return the type of collection see TClassEdit::ESTLType

   if (!fValue) {
      Initialize(kFALSE);
   }
   return fSTL_type;
}

//______________________________________________________________________________
ULong_t TGenCollectionProxy::GetIncrement() const {
   // Return the offset between two consecutive value_types (memory layout).

   if (!fValue) {
      Initialize(kFALSE);
   }
   return fValDiff;
}

//______________________________________________________________________________
UInt_t TGenCollectionProxy::Sizeof() const
{
   // Return the sizeof the collection object.
   return fClass->Size();
}

//______________________________________________________________________________
Bool_t TGenCollectionProxy::HasPointers() const
{
   // Return true if the content is of type 'pointer to'

   // Initialize proxy in case it hasn't been initialized yet
   if( !fValue )
      Initialize(kFALSE);

   // The content of a map and multimap is always a 'pair' and hence
   // fPointers means "Flag to indicate if containee has pointers (key or value)"
   // so we need to ignore its value for map and multimap;
   return fPointers && !(fSTL_type == ROOT::kSTLmap || fSTL_type == ROOT::kSTLmultimap);
}

//______________________________________________________________________________
TClass *TGenCollectionProxy::GetValueClass() const
{
   // Return a pointer to the TClass representing the content.

   if (!fValue) Initialize(kFALSE);
   return fValue ? (*fValue).fType.GetClass() : 0;
}

//______________________________________________________________________________
void TGenCollectionProxy::UpdateValueClass(const TClass *oldValueType, TClass *newValueType)
{
   // Update the internal ValueClass when a TClass constructor need to
   // replace an emulated TClass by the real TClass.

   // Note that we do not need to update anything if we have not yet been
   // initialized.  In addition (see ROOT-6040) doing an initialization here
   // might hence a nested dlopen (due to autoloading).
   if (fValue.load() && (*fValue).fType == oldValueType) {
      // Set pointer to the TClass representing the content.
      (*fValue).fType = newValueType;
   }
}

//______________________________________________________________________________
EDataType TGenCollectionProxy::GetType() const
{
   // If the content is a simple numerical value, return its type (see TDataType)

   if ( !fValue ) Initialize(kFALSE);
   return (*fValue).fKind;
}

//______________________________________________________________________________
void* TGenCollectionProxy::At(UInt_t idx)
{
   // Return the address of the value at index 'idx'
   if ( fEnv && fEnv->fObject ) {
      switch (fSTL_type) {
      case ROOT::kSTLvector:
         fEnv->fIdx = idx;
         switch( idx ) {
         case 0:
            return fEnv->fStart = fFirst.invoke(fEnv);
         default:
            if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
            return ((char*)fEnv->fStart) + fValDiff*idx;
         }
      case ROOT::kSTLset:
      case ROOT::kSTLmultiset:
      case ROOT::kSTLmap:
      case ROOT::kSTLmultimap:
         if ( fEnv->fUseTemp ) {
            return (((char*)fEnv->fTemp)+idx*fValDiff);
         }
         // Intentional fall through.
      default:
         switch( idx ) {
         case 0:
            fEnv->fIdx = idx;
            return fEnv->fStart = fFirst.invoke(fEnv);
         default:  {
            fEnv->fIdx = idx - fEnv->fIdx;
            if (! fEnv->fStart ) fEnv->fStart = fFirst.invoke(fEnv);
            void* result = fNext.invoke(fEnv);
            fEnv->fIdx = idx;
            return result;
         }
         }
      }
   }
   Fatal("TGenCollectionProxy","At> Logic error - no proxy object set.");
   return 0;
}

//______________________________________________________________________________
void TGenCollectionProxy::Clear(const char* opt)
{
   // Clear the emulated collection.
   if ( fEnv && fEnv->fObject ) {
      if ( (fProperties & kNeedDelete) && opt && *opt=='f' ) {
         size_t i, n = *(size_t*)fSize.invoke(fEnv);
         if ( n > 0 ) {
            for (i=0; i<n; ++i)
               DeleteItem(true, TGenCollectionProxy::At(i));
         }
      }
      fClear.invoke(fEnv);
   }
}

//______________________________________________________________________________
UInt_t TGenCollectionProxy::Size() const
{
   // Return the current size of the container
   if ( fEnv && fEnv->fObject ) {
      if (fEnv->fUseTemp) {
         return fEnv->fSize;
      } else {
         return *(size_t*)fSize.invoke(fEnv);
      }
   }
   Fatal("TGenCollectionProxy","Size> Logic error - no proxy object set.");
   return 0;
}

//______________________________________________________________________________
void TGenCollectionProxy::Resize(UInt_t n, Bool_t force)
{
   // Resize the container
   if ( fEnv && fEnv->fObject ) {
      if ( force && fPointers ) {
         size_t i, nold = *(size_t*)fSize.invoke(fEnv);
         if ( n != nold ) {
            for (i=n; i<nold; ++i)
               DeleteItem(true, *(void**)TGenCollectionProxy::At(i));
         }
      }
      MESSAGE(3, "Resize(n)" );
      fEnv->fSize = n;
      fResize(fEnv->fObject,fEnv->fSize);
      return;
   }
   Fatal("TGenCollectionProxy","Resize> Logic error - no proxy object set.");
}

//______________________________________________________________________________
void* TGenCollectionProxy::Allocate(UInt_t n, Bool_t /* forceDelete */ )
{
   // Allocate the needed space.
   // For associative collection, this returns a TStaging object that
   // need to be deleted manually __or__ returned by calling Commit(TStaging*)

   if ( fEnv && fEnv->fObject ) {
      switch ( fSTL_type ) {
         case ROOT::kSTLset:
         case ROOT::kSTLmultiset:
         case ROOT::kSTLmap:
         case ROOT::kSTLmultimap: {
            if ( (fProperties & kNeedDelete) )
               Clear("force");
            else
               fClear.invoke(fEnv);
            // Commit no longer use the environment and thus no longer decrease
            // the count.  Consequently we no longer should increase it here.
            // ++fEnv->fRefCount;
            fEnv->fSize  = n;

            TStaging *s;
            if (fStaged.empty()) {
               s = new TStaging(n,fValDiff);
            } else {
               s = fStaged.back();
               fStaged.pop_back();
               s->Resize(n);
            }
            fConstruct(s->GetContent(),s->GetSize());

            s->SetTarget(fEnv->fObject);

            fEnv->fTemp = s->GetContent();
            fEnv->fUseTemp = kTRUE;
            fEnv->fStart = fEnv->fTemp;

            return s;
         }
         case ROOT::kSTLvector:
         case ROOT::kSTLlist:
         case ROOT::kSTLdeque:
            if( (fProperties & kNeedDelete) ) {
               Clear("force");
            }
            fEnv->fSize = n;
            fResize(fEnv->fObject,n);
            return fEnv->fObject;

        case ROOT::kSTLbitset: {
            TStaging *s;
            if (fStaged.empty()) {
               s = new TStaging(n,fValDiff);
            } else {
               s = fStaged.back();
               fStaged.pop_back();
               s->Resize(n);
            }
            s->SetTarget(fEnv->fObject);

            fEnv->fTemp = s->GetContent();
            fEnv->fUseTemp = kTRUE;
            fEnv->fStart = fEnv->fTemp;

            return s;
        }
      }
   }
   return 0;
}

//______________________________________________________________________________
void TGenCollectionProxy::Insert(const void *data, void *container, size_t size)
{
   // Insert data into the container where data is a C-style array of the actual type contained in the collection
   // of the given size.   For associative container (map, etc.), the data type is the pair<key,value>.

   fFeed((void*)data,container,size);
}

//______________________________________________________________________________
void TGenCollectionProxy::Commit(void* from)
{
   // Commit the change.

   if (fProperties & kIsAssociative) {
//      case ROOT::kSTLmap:
//      case ROOT::kSTLmultimap:
//      case ROOT::kSTLset:
//      case ROOT::kSTLmultiset:
      if ( from ) {
         TStaging *s = (TStaging*) from;
         if ( s->GetTarget() ) {
            fFeed(s->GetContent(),s->GetTarget(),s->GetSize());
         }
         fDestruct(s->GetContent(),s->GetSize());
         s->SetTarget(0);
         fStaged.push_back(s);
      }
   }
}

//______________________________________________________________________________
void TGenCollectionProxy::PushProxy(void *objstart)
{
   // Add an object.

   if ( !fValue ) Initialize(kFALSE);
   if ( !fProxyList.empty() ) {
      EnvironBase_t* back = fProxyList.back();
      if ( back->fObject == objstart ) {
         ++back->fRefCount;
         fProxyList.push_back(back);
         fEnv = back;
         return;
      }
   }
   EnvironBase_t* e    = 0;
   if ( fProxyKept.empty() ) {
      e = (EnvironBase_t*)fCreateEnv.invoke();
      e->fTemp  = 0;
      e->fUseTemp = kFALSE;
   }
   else {
      e = fProxyKept.back();
      fProxyKept.pop_back();
   }
   e->fSize     = 0;
   e->fRefCount = 1;
   e->fObject   = objstart;
   e->fStart    = 0;
   e->fIdx      = 0;
   // ::memset(e->buff,0,sizeof(e->buff));
   fProxyList.push_back(e);
   fEnv = e;
}

//______________________________________________________________________________
void TGenCollectionProxy::PopProxy()
{
   // Remove the last object.

   if ( !fProxyList.empty() ) {
      EnvironBase_t* e = fProxyList.back();
      if ( --e->fRefCount <= 0 ) {
         fProxyKept.push_back(e);
         e->fUseTemp = kFALSE;
      }
      fProxyList.pop_back();
   }
   fEnv = fProxyList.empty() ? 0 : fProxyList.back();
}

//______________________________________________________________________________
void TGenCollectionProxy::DeleteItem(Bool_t force, void* ptr) const
{
   // Call to delete/destruct individual item.
   if ( force && ptr ) {
      switch (fSTL_type) {
         case ROOT::kSTLmap:
         case ROOT::kSTLmultimap: {
            if ( fKey->fCase&kIsPointer ) {
               if (fKey->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fKey->fType->GetCollectionProxy();
                  TPushPop helper(proxy,*(void**)ptr);
                  proxy->Clear("force");
               }
               fKey->DeleteItem(*(void**)ptr);
             } else {
               if (fKey->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fKey->fType->GetCollectionProxy();
                  TPushPop helper(proxy,ptr);
                  proxy->Clear("force");
               }
            }
            char *addr = ((char*)ptr)+fValOffset;
            if ( fVal->fCase&kIsPointer ) {
               if ( fVal->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
                  TPushPop helper(proxy,*(void**)addr);
                  proxy->Clear("force");
               }
               fVal->DeleteItem(*(void**)addr);
           } else {
               if ( fVal->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
                  TPushPop helper(proxy,addr);
                  proxy->Clear("force");
               }
            }
            break;
         }
         default: {
            if ( fVal->fCase&kIsPointer ) {
               if (fVal->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
                  TPushPop helper(proxy,*(void**)ptr);
                  proxy->Clear("force");
               }
               fVal->DeleteItem(*(void**)ptr);
            } else {
               if (fVal->fProperties&kNeedDelete) {
                  TVirtualCollectionProxy *proxy = fVal->fType->GetCollectionProxy();
                  TPushPop helper(proxy,ptr);
                  proxy->Clear("force");
               }
            }
            break;
         }
      }
   }
}

//______________________________________________________________________________
void TGenCollectionProxy::ReadBuffer(TBuffer & /* b */, void * /* obj */, const TClass * /* onfileClass */)
{
   MayNotUse("TGenCollectionProxy::ReadBuffer(TBuffer &, void *, const TClass *)");
}

//______________________________________________________________________________
void TGenCollectionProxy::ReadBuffer(TBuffer & /* b */, void * /* obj */)
{
   MayNotUse("TGenCollectionProxy::ReadBuffer(TBuffer &, void *)");
}

//______________________________________________________________________________
void TGenCollectionProxy::Streamer(TBuffer &buff)
{
   // Streamer Function.
   if ( fEnv ) {
      GetCollectionClass()->Streamer( fEnv->fObject, buff );
      return;
   }
   Fatal("TGenCollectionProxy","Streamer> Logic error - no proxy object set.");
}

//______________________________________________________________________________
void TGenCollectionProxy::Streamer(TBuffer &buff, void *objp, int /* siz */ )
{
   // Streamer I/O overload
   TPushPop env(this, objp);
   Streamer(buff);
}

//______________________________________________________________________________
void TGenCollectionProxy::operator()(TBuffer &b, void *objp)
{
   // TClassStreamer IO overload
   Streamer(b, objp, 0);
}


struct TGenCollectionProxy__SlowIterator {
   TVirtualCollectionProxy *fProxy;
   UInt_t fIndex;
   TGenCollectionProxy__SlowIterator(TVirtualCollectionProxy *proxy) : fProxy(proxy), fIndex(0) {}
};

//______________________________________________________________________________
void TGenCollectionProxy__SlowCreateIterators(void * /* collection */, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
{
   new (*begin_arena) TGenCollectionProxy__SlowIterator(proxy);
   *(UInt_t*)*end_arena = proxy->Size();
}

//______________________________________________________________________________
void *TGenCollectionProxy__SlowNext(void *iter, const void *end)
{
   TGenCollectionProxy__SlowIterator *iterator = (TGenCollectionProxy__SlowIterator*)iter;
   if (iterator->fIndex != *(UInt_t*)end) {
      void *result = iterator->fProxy->At(iterator->fIndex);
      ++(iterator->fIndex);
      return result;
   } else {
      return 0;
   }
}

//______________________________________________________________________________
void * TGenCollectionProxy__SlowCopyIterator(void *dest, const void *source)
{
   *(TGenCollectionProxy__SlowIterator*)dest = *(TGenCollectionProxy__SlowIterator*)source;
   return dest;
}

//______________________________________________________________________________
void TGenCollectionProxy__SlowDeleteSingleIterators(void *)
{
   // Nothing to do
}

//______________________________________________________________________________
void TGenCollectionProxy__SlowDeleteTwoIterators(void *, void *)
{
   // Nothing to do
}


//______________________________________________________________________________
void TGenCollectionProxy__VectorCreateIterators(void *obj, void **begin_arena, void **end_arena, TVirtualCollectionProxy*)
{
   // We can safely assume that the std::vector layout does not really depend on
   // the content!
   std::vector<char> *vec = (std::vector<char>*)obj;
   if (vec->empty()) {
      *begin_arena = 0;
      *end_arena = 0;
      return;
   }
   *begin_arena = &(*vec->begin());
#ifdef R__VISUAL_CPLUSPLUS
   *end_arena = &(*(vec->end()-1)) + 1; // On windows we can not dererence the end iterator at all.
#else
   // coverity[past_the_end] Safe on other platforms
   *end_arena = &(*vec->end());
#endif

}

//______________________________________________________________________________
void *TGenCollectionProxy__VectorNext(void *, const void *)
{
   // Should not be used.
   R__ASSERT(0);
   return 0;
}

//______________________________________________________________________________
void *TGenCollectionProxy__VectorCopyIterator(void *dest, const void *source)
{
   *(void**)dest = *(void**)source;
   return dest;
}

//______________________________________________________________________________
void TGenCollectionProxy__VectorDeleteSingleIterators(void *)
{
   // Nothing to do
}

//______________________________________________________________________________
void TGenCollectionProxy__VectorDeleteTwoIterators(void *, void *)
{
   // Nothing to do
}



//______________________________________________________________________________
void TGenCollectionProxy__StagingCreateIterators(void *obj, void **begin_arena, void **end_arena, TVirtualCollectionProxy *)
{
   TGenCollectionProxy::TStaging * s = (TGenCollectionProxy::TStaging*)obj;
   *begin_arena = s->GetContent();
   *end_arena = s->GetEnd();
}

//______________________________________________________________________________
void *TGenCollectionProxy__StagingNext(void *, const void *)
{
   // Should not be used.
   R__ASSERT(0);
   return 0;
}

//______________________________________________________________________________
void *TGenCollectionProxy__StagingCopyIterator(void *dest, const void *source)
{
   *(void**)dest = *(void**)source;
   return dest;
}

//______________________________________________________________________________
void TGenCollectionProxy__StagingDeleteSingleIterators(void *)
{
   // Nothing to do
}

//______________________________________________________________________________
void TGenCollectionProxy__StagingDeleteTwoIterators(void *, void *)
{
   // Nothing to do
}


//______________________________________________________________________________
TVirtualCollectionProxy::CreateIterators_t TGenCollectionProxy::GetFunctionCreateIterators(Bool_t read)
{
   // See typedef void (*CreateIterators_t)(void *collection, void *&begin_arena, void *&end_arena);
   // begin_arena and end_arena should contain the location of memory arena  of size fgIteratorSize.
   // If the collection iterator are of that size or less, the iterators will be constructed in place in those location (new with placement)
   // Otherwise the iterators will be allocated via a regular new and their address returned by modifying the value of begin_arena and end_arena.

   if (read) {
      if ( !fValue ) InitializeEx(kFALSE);
      if ( (fProperties & kIsAssociative) && read)
         return TGenCollectionProxy__StagingCreateIterators;
   }

   if ( fFunctionCreateIterators ) return fFunctionCreateIterators;

   if ( !fValue ) InitializeEx(kFALSE);

//   fprintf(stderr,"GetFunctinCreateIterator for %s will give: ",fClass.GetClassName());
//   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
//      fprintf(stderr,"vector/emulated iterator\n");
//   else if ( (fProperties & kIsAssociative) && read)
//      fprintf(stderr,"an associative read iterator\n");
//   else
//      fprintf(stderr,"a generic iterator\n");

   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
      return fFunctionCreateIterators = TGenCollectionProxy__VectorCreateIterators;
   else if ( (fProperties & kIsAssociative) && read)
      return TGenCollectionProxy__StagingCreateIterators;
   else
      return fFunctionCreateIterators = TGenCollectionProxy__SlowCreateIterators;
}

//______________________________________________________________________________
TVirtualCollectionProxy::CopyIterator_t TGenCollectionProxy::GetFunctionCopyIterator(Bool_t read)
{
   // See typedef void (*CopyIterator_t)(void *&dest, const void *source);
   // Copy the iterator source, into dest.   dest should contain should contain the location of memory arena  of size fgIteratorSize.
   // If the collection iterator are of that size or less, the iterator will be constructed in place in this location (new with placement)
   // Otherwise the iterator will be allocated via a regular new and its address returned by modifying the value of dest.

   if (read) {
      if ( !fValue ) InitializeEx(kFALSE);
      if ( (fProperties & kIsAssociative) && read)
         return TGenCollectionProxy__StagingCopyIterator;
   }

   if ( fFunctionCopyIterator ) return fFunctionCopyIterator;

   if ( !fValue ) InitializeEx(kFALSE);

   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
      return fFunctionCopyIterator = TGenCollectionProxy__VectorCopyIterator;
   else if ( (fProperties & kIsAssociative) && read)
      return TGenCollectionProxy__StagingCopyIterator;
   else
      return fFunctionCopyIterator = TGenCollectionProxy__SlowCopyIterator;
}

//______________________________________________________________________________
TVirtualCollectionProxy::Next_t TGenCollectionProxy::GetFunctionNext(Bool_t read)
{
   // See typedef void* (*Next_t)(void *iter, void *end);
   // iter and end should be pointer to respectively an iterator to be incremented and the result of colleciton.end()
   // 'Next' will increment the iterator 'iter' and return 0 if the iterator reached the end.
   // If the end is not reached, 'Next' will return the address of the content unless the collection contains pointers in
   // which case 'Next' will return the value of the pointer.

   if (read) {
      if ( !fValue ) InitializeEx(kFALSE);
      if ( (fProperties & kIsAssociative) && read)
         return TGenCollectionProxy__StagingNext;
   }

   if ( fFunctionNextIterator ) return fFunctionNextIterator;

   if ( !fValue ) InitializeEx(kFALSE);

   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
      return fFunctionNextIterator = TGenCollectionProxy__VectorNext;
   else if ( (fProperties & kIsAssociative) && read)
      return TGenCollectionProxy__StagingNext;
   else
      return fFunctionNextIterator = TGenCollectionProxy__SlowNext;
}

//______________________________________________________________________________
TVirtualCollectionProxy::DeleteIterator_t TGenCollectionProxy::GetFunctionDeleteIterator(Bool_t read)
{
   // See typedef void (*DeleteIterator_t)(void *iter);
   // If the sizeof iterator is greater than fgIteratorArenaSize, call delete on the addresses,
   // Otherwise just call the iterator's destructor.

   if (read) {
      if ( !fValue ) InitializeEx(kFALSE);
      if ( (fProperties & kIsAssociative) && read)
         return TGenCollectionProxy__StagingDeleteSingleIterators;
   }

   if ( fFunctionDeleteIterator ) return fFunctionDeleteIterator;

   if ( !fValue ) InitializeEx(kFALSE);

   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
      return fFunctionDeleteIterator = TGenCollectionProxy__VectorDeleteSingleIterators;
   else if ( (fProperties & kIsAssociative) && read)
      return TGenCollectionProxy__StagingDeleteSingleIterators;
   else
      return fFunctionDeleteIterator = TGenCollectionProxy__SlowDeleteSingleIterators;
}

//______________________________________________________________________________
TVirtualCollectionProxy::DeleteTwoIterators_t TGenCollectionProxy::GetFunctionDeleteTwoIterators(Bool_t read)
{
   // See typedef void (*DeleteTwoIterators_t)(void *begin, void *end);
   // If the sizeof iterator is greater than fgIteratorArenaSize, call delete on the addresses,
   // Otherwise just call the iterator's destructor.

   if (read) {
      if ( !fValue ) InitializeEx(kFALSE);
      if ( (fProperties & kIsAssociative) && read)
         return TGenCollectionProxy__StagingDeleteTwoIterators;
   }

   if ( fFunctionDeleteTwoIterators ) return fFunctionDeleteTwoIterators;

   if ( !fValue ) InitializeEx(kFALSE);

   if (fSTL_type==ROOT::kSTLvector || (fProperties & kIsEmulated))
      return fFunctionDeleteTwoIterators = TGenCollectionProxy__VectorDeleteTwoIterators;
   else if ( (fProperties & kIsAssociative) && read)
      return TGenCollectionProxy__StagingDeleteTwoIterators;
   else
      return fFunctionDeleteTwoIterators = TGenCollectionProxy__SlowDeleteTwoIterators;
}

//______________________________________________________________________________
TStreamerInfoActions::TActionSequence *TGenCollectionProxy::GetConversionReadMemberWiseActions(TClass *oldClass, Int_t version)
{
   // Return the set of action necessary to stream in this collection member-wise coming from
   // the old value class layout refered to by 'version'.

   if (oldClass == 0) {
      return 0;
   }
   TObjArray* arr = 0;
   TStreamerInfoActions::TActionSequence *result = 0;
   if (fConversionReadMemberWise) {
      std::map<std::string, TObjArray*>::iterator it;

      it = fConversionReadMemberWise->find( oldClass->GetName() );

      if( it != fConversionReadMemberWise->end() ) {
         arr = it->second;
      }

      if (arr) {
         result = (TStreamerInfoActions::TActionSequence *)arr->At(version);
         if (result) {
            return result;
         }
      }
   }

   // Need to create it.
   TClass *valueClass = GetValueClass();
   if (valueClass == 0) {
      return 0;
   }
   TVirtualStreamerInfo *info = valueClass->GetConversionStreamerInfo(oldClass,version);
   if (info == 0) {
      return 0;
   }
   result = TStreamerInfoActions::TActionSequence::CreateReadMemberWiseActions(info,*this);

   if (!arr) {
      arr = new TObjArray(version+10, -1);
      if (!fConversionReadMemberWise) {
         fConversionReadMemberWise = new std::map<std::string, TObjArray*>();
      }
      (*fConversionReadMemberWise)[oldClass->GetName()] = arr;
   }
   arr->AddAtAndExpand( result, version );

   return result;
}

//______________________________________________________________________________
TStreamerInfoActions::TActionSequence *TGenCollectionProxy::GetReadMemberWiseActions(Int_t version)
{
   // Return the set of action necessary to stream in this collection member-wise coming from
   // the old value class layout refered to by 'version'.

   TStreamerInfoActions::TActionSequence *result = 0;
   if (version < (fReadMemberWise->GetSize()-1)) { // -1 because the 'index' starts at -1
      result = (TStreamerInfoActions::TActionSequence *)fReadMemberWise->At(version);
   }
   if (result == 0) {
      // Need to create it.
      TClass *valueClass = GetValueClass();
      TVirtualStreamerInfo *info = 0;
      if (valueClass) {
         info = valueClass->GetStreamerInfo(version);
      }
      result = TStreamerInfoActions::TActionSequence::CreateReadMemberWiseActions(info,*this);
      fReadMemberWise->AddAtAndExpand(result,version);
   }
   return result;
}

//______________________________________________________________________________
TStreamerInfoActions::TActionSequence *TGenCollectionProxy::GetWriteMemberWiseActions()
{
   // Return the set of action necessary to stream out this collection member-wise.

  TStreamerInfoActions::TActionSequence *result = fWriteMemberWise;
  if (result == 0) {
     // Need to create it.
     TClass *valueClass = GetValueClass();
     TVirtualStreamerInfo *info = 0;
     if (valueClass) {
        info = valueClass->GetStreamerInfo();
     }
     result = TStreamerInfoActions::TActionSequence::CreateWriteMemberWiseActions(info,*this);
     fWriteMemberWise=result;
  }
  return result;
}

 TGenCollectionProxy.cxx:1
 TGenCollectionProxy.cxx:2
 TGenCollectionProxy.cxx:3
 TGenCollectionProxy.cxx:4
 TGenCollectionProxy.cxx:5
 TGenCollectionProxy.cxx:6
 TGenCollectionProxy.cxx:7
 TGenCollectionProxy.cxx:8
 TGenCollectionProxy.cxx:9
 TGenCollectionProxy.cxx:10
 TGenCollectionProxy.cxx:11
 TGenCollectionProxy.cxx:12
 TGenCollectionProxy.cxx:13
 TGenCollectionProxy.cxx:14
 TGenCollectionProxy.cxx:15
 TGenCollectionProxy.cxx:16
 TGenCollectionProxy.cxx:17
 TGenCollectionProxy.cxx:18
 TGenCollectionProxy.cxx:19
 TGenCollectionProxy.cxx:20
 TGenCollectionProxy.cxx:21
 TGenCollectionProxy.cxx:22
 TGenCollectionProxy.cxx:23
 TGenCollectionProxy.cxx:24
 TGenCollectionProxy.cxx:25
 TGenCollectionProxy.cxx:26
 TGenCollectionProxy.cxx:27
 TGenCollectionProxy.cxx:28
 TGenCollectionProxy.cxx:29
 TGenCollectionProxy.cxx:30
 TGenCollectionProxy.cxx:31
 TGenCollectionProxy.cxx:32
 TGenCollectionProxy.cxx:33
 TGenCollectionProxy.cxx:34
 TGenCollectionProxy.cxx:35
 TGenCollectionProxy.cxx:36
 TGenCollectionProxy.cxx:37
 TGenCollectionProxy.cxx:38
 TGenCollectionProxy.cxx:39
 TGenCollectionProxy.cxx:40
 TGenCollectionProxy.cxx:41
 TGenCollectionProxy.cxx:42
 TGenCollectionProxy.cxx:43
 TGenCollectionProxy.cxx:44
 TGenCollectionProxy.cxx:45
 TGenCollectionProxy.cxx:46
 TGenCollectionProxy.cxx:47
 TGenCollectionProxy.cxx:48
 TGenCollectionProxy.cxx:49
 TGenCollectionProxy.cxx:50
 TGenCollectionProxy.cxx:51
 TGenCollectionProxy.cxx:52
 TGenCollectionProxy.cxx:53
 TGenCollectionProxy.cxx:54
 TGenCollectionProxy.cxx:55
 TGenCollectionProxy.cxx:56
 TGenCollectionProxy.cxx:57
 TGenCollectionProxy.cxx:58
 TGenCollectionProxy.cxx:59
 TGenCollectionProxy.cxx:60
 TGenCollectionProxy.cxx:61
 TGenCollectionProxy.cxx:62
 TGenCollectionProxy.cxx:63
 TGenCollectionProxy.cxx:64
 TGenCollectionProxy.cxx:65
 TGenCollectionProxy.cxx:66
 TGenCollectionProxy.cxx:67
 TGenCollectionProxy.cxx:68
 TGenCollectionProxy.cxx:69
 TGenCollectionProxy.cxx:70
 TGenCollectionProxy.cxx:71
 TGenCollectionProxy.cxx:72
 TGenCollectionProxy.cxx:73
 TGenCollectionProxy.cxx:74
 TGenCollectionProxy.cxx:75
 TGenCollectionProxy.cxx:76
 TGenCollectionProxy.cxx:77
 TGenCollectionProxy.cxx:78
 TGenCollectionProxy.cxx:79
 TGenCollectionProxy.cxx:80
 TGenCollectionProxy.cxx:81
 TGenCollectionProxy.cxx:82
 TGenCollectionProxy.cxx:83
 TGenCollectionProxy.cxx:84
 TGenCollectionProxy.cxx:85
 TGenCollectionProxy.cxx:86
 TGenCollectionProxy.cxx:87
 TGenCollectionProxy.cxx:88
 TGenCollectionProxy.cxx:89
 TGenCollectionProxy.cxx:90
 TGenCollectionProxy.cxx:91
 TGenCollectionProxy.cxx:92
 TGenCollectionProxy.cxx:93
 TGenCollectionProxy.cxx:94
 TGenCollectionProxy.cxx:95
 TGenCollectionProxy.cxx:96
 TGenCollectionProxy.cxx:97
 TGenCollectionProxy.cxx:98
 TGenCollectionProxy.cxx:99
 TGenCollectionProxy.cxx:100
 TGenCollectionProxy.cxx:101
 TGenCollectionProxy.cxx:102
 TGenCollectionProxy.cxx:103
 TGenCollectionProxy.cxx:104
 TGenCollectionProxy.cxx:105
 TGenCollectionProxy.cxx:106
 TGenCollectionProxy.cxx:107
 TGenCollectionProxy.cxx:108
 TGenCollectionProxy.cxx:109
 TGenCollectionProxy.cxx:110
 TGenCollectionProxy.cxx:111
 TGenCollectionProxy.cxx:112
 TGenCollectionProxy.cxx:113
 TGenCollectionProxy.cxx:114
 TGenCollectionProxy.cxx:115
 TGenCollectionProxy.cxx:116
 TGenCollectionProxy.cxx:117
 TGenCollectionProxy.cxx:118
 TGenCollectionProxy.cxx:119
 TGenCollectionProxy.cxx:120
 TGenCollectionProxy.cxx:121
 TGenCollectionProxy.cxx:122
 TGenCollectionProxy.cxx:123
 TGenCollectionProxy.cxx:124
 TGenCollectionProxy.cxx:125
 TGenCollectionProxy.cxx:126
 TGenCollectionProxy.cxx:127
 TGenCollectionProxy.cxx:128
 TGenCollectionProxy.cxx:129
 TGenCollectionProxy.cxx:130
 TGenCollectionProxy.cxx:131
 TGenCollectionProxy.cxx:132
 TGenCollectionProxy.cxx:133
 TGenCollectionProxy.cxx:134
 TGenCollectionProxy.cxx:135
 TGenCollectionProxy.cxx:136
 TGenCollectionProxy.cxx:137
 TGenCollectionProxy.cxx:138
 TGenCollectionProxy.cxx:139
 TGenCollectionProxy.cxx:140
 TGenCollectionProxy.cxx:141
 TGenCollectionProxy.cxx:142
 TGenCollectionProxy.cxx:143
 TGenCollectionProxy.cxx:144
 TGenCollectionProxy.cxx:145
 TGenCollectionProxy.cxx:146
 TGenCollectionProxy.cxx:147
 TGenCollectionProxy.cxx:148
 TGenCollectionProxy.cxx:149
 TGenCollectionProxy.cxx:150
 TGenCollectionProxy.cxx:151
 TGenCollectionProxy.cxx:152
 TGenCollectionProxy.cxx:153
 TGenCollectionProxy.cxx:154
 TGenCollectionProxy.cxx:155
 TGenCollectionProxy.cxx:156
 TGenCollectionProxy.cxx:157
 TGenCollectionProxy.cxx:158
 TGenCollectionProxy.cxx:159
 TGenCollectionProxy.cxx:160
 TGenCollectionProxy.cxx:161
 TGenCollectionProxy.cxx:162
 TGenCollectionProxy.cxx:163
 TGenCollectionProxy.cxx:164
 TGenCollectionProxy.cxx:165
 TGenCollectionProxy.cxx:166
 TGenCollectionProxy.cxx:167
 TGenCollectionProxy.cxx:168
 TGenCollectionProxy.cxx:169
 TGenCollectionProxy.cxx:170
 TGenCollectionProxy.cxx:171
 TGenCollectionProxy.cxx:172
 TGenCollectionProxy.cxx:173
 TGenCollectionProxy.cxx:174
 TGenCollectionProxy.cxx:175
 TGenCollectionProxy.cxx:176
 TGenCollectionProxy.cxx:177
 TGenCollectionProxy.cxx:178
 TGenCollectionProxy.cxx:179
 TGenCollectionProxy.cxx:180
 TGenCollectionProxy.cxx:181
 TGenCollectionProxy.cxx:182
 TGenCollectionProxy.cxx:183
 TGenCollectionProxy.cxx:184
 TGenCollectionProxy.cxx:185
 TGenCollectionProxy.cxx:186
 TGenCollectionProxy.cxx:187
 TGenCollectionProxy.cxx:188
 TGenCollectionProxy.cxx:189
 TGenCollectionProxy.cxx:190
 TGenCollectionProxy.cxx:191
 TGenCollectionProxy.cxx:192
 TGenCollectionProxy.cxx:193
 TGenCollectionProxy.cxx:194
 TGenCollectionProxy.cxx:195
 TGenCollectionProxy.cxx:196
 TGenCollectionProxy.cxx:197
 TGenCollectionProxy.cxx:198
 TGenCollectionProxy.cxx:199
 TGenCollectionProxy.cxx:200
 TGenCollectionProxy.cxx:201
 TGenCollectionProxy.cxx:202
 TGenCollectionProxy.cxx:203
 TGenCollectionProxy.cxx:204
 TGenCollectionProxy.cxx:205
 TGenCollectionProxy.cxx:206
 TGenCollectionProxy.cxx:207
 TGenCollectionProxy.cxx:208
 TGenCollectionProxy.cxx:209
 TGenCollectionProxy.cxx:210
 TGenCollectionProxy.cxx:211
 TGenCollectionProxy.cxx:212
 TGenCollectionProxy.cxx:213
 TGenCollectionProxy.cxx:214
 TGenCollectionProxy.cxx:215
 TGenCollectionProxy.cxx:216
 TGenCollectionProxy.cxx:217
 TGenCollectionProxy.cxx:218
 TGenCollectionProxy.cxx:219
 TGenCollectionProxy.cxx:220
 TGenCollectionProxy.cxx:221
 TGenCollectionProxy.cxx:222
 TGenCollectionProxy.cxx:223
 TGenCollectionProxy.cxx:224
 TGenCollectionProxy.cxx:225
 TGenCollectionProxy.cxx:226
 TGenCollectionProxy.cxx:227
 TGenCollectionProxy.cxx:228
 TGenCollectionProxy.cxx:229
 TGenCollectionProxy.cxx:230
 TGenCollectionProxy.cxx:231
 TGenCollectionProxy.cxx:232
 TGenCollectionProxy.cxx:233
 TGenCollectionProxy.cxx:234
 TGenCollectionProxy.cxx:235
 TGenCollectionProxy.cxx:236
 TGenCollectionProxy.cxx:237
 TGenCollectionProxy.cxx:238
 TGenCollectionProxy.cxx:239
 TGenCollectionProxy.cxx:240
 TGenCollectionProxy.cxx:241
 TGenCollectionProxy.cxx:242
 TGenCollectionProxy.cxx:243
 TGenCollectionProxy.cxx:244
 TGenCollectionProxy.cxx:245
 TGenCollectionProxy.cxx:246
 TGenCollectionProxy.cxx:247
 TGenCollectionProxy.cxx:248
 TGenCollectionProxy.cxx:249
 TGenCollectionProxy.cxx:250
 TGenCollectionProxy.cxx:251
 TGenCollectionProxy.cxx:252
 TGenCollectionProxy.cxx:253
 TGenCollectionProxy.cxx:254
 TGenCollectionProxy.cxx:255
 TGenCollectionProxy.cxx:256
 TGenCollectionProxy.cxx:257
 TGenCollectionProxy.cxx:258
 TGenCollectionProxy.cxx:259
 TGenCollectionProxy.cxx:260
 TGenCollectionProxy.cxx:261
 TGenCollectionProxy.cxx:262
 TGenCollectionProxy.cxx:263
 TGenCollectionProxy.cxx:264
 TGenCollectionProxy.cxx:265
 TGenCollectionProxy.cxx:266
 TGenCollectionProxy.cxx:267
 TGenCollectionProxy.cxx:268
 TGenCollectionProxy.cxx:269
 TGenCollectionProxy.cxx:270
 TGenCollectionProxy.cxx:271
 TGenCollectionProxy.cxx:272
 TGenCollectionProxy.cxx:273
 TGenCollectionProxy.cxx:274
 TGenCollectionProxy.cxx:275
 TGenCollectionProxy.cxx:276
 TGenCollectionProxy.cxx:277
 TGenCollectionProxy.cxx:278
 TGenCollectionProxy.cxx:279
 TGenCollectionProxy.cxx:280
 TGenCollectionProxy.cxx:281
 TGenCollectionProxy.cxx:282
 TGenCollectionProxy.cxx:283
 TGenCollectionProxy.cxx:284
 TGenCollectionProxy.cxx:285
 TGenCollectionProxy.cxx:286
 TGenCollectionProxy.cxx:287
 TGenCollectionProxy.cxx:288
 TGenCollectionProxy.cxx:289
 TGenCollectionProxy.cxx:290
 TGenCollectionProxy.cxx:291
 TGenCollectionProxy.cxx:292
 TGenCollectionProxy.cxx:293
 TGenCollectionProxy.cxx:294
 TGenCollectionProxy.cxx:295
 TGenCollectionProxy.cxx:296
 TGenCollectionProxy.cxx:297
 TGenCollectionProxy.cxx:298
 TGenCollectionProxy.cxx:299
 TGenCollectionProxy.cxx:300
 TGenCollectionProxy.cxx:301
 TGenCollectionProxy.cxx:302
 TGenCollectionProxy.cxx:303
 TGenCollectionProxy.cxx:304
 TGenCollectionProxy.cxx:305
 TGenCollectionProxy.cxx:306
 TGenCollectionProxy.cxx:307
 TGenCollectionProxy.cxx:308
 TGenCollectionProxy.cxx:309
 TGenCollectionProxy.cxx:310
 TGenCollectionProxy.cxx:311
 TGenCollectionProxy.cxx:312
 TGenCollectionProxy.cxx:313
 TGenCollectionProxy.cxx:314
 TGenCollectionProxy.cxx:315
 TGenCollectionProxy.cxx:316
 TGenCollectionProxy.cxx:317
 TGenCollectionProxy.cxx:318
 TGenCollectionProxy.cxx:319
 TGenCollectionProxy.cxx:320
 TGenCollectionProxy.cxx:321
 TGenCollectionProxy.cxx:322
 TGenCollectionProxy.cxx:323
 TGenCollectionProxy.cxx:324
 TGenCollectionProxy.cxx:325
 TGenCollectionProxy.cxx:326
 TGenCollectionProxy.cxx:327
 TGenCollectionProxy.cxx:328
 TGenCollectionProxy.cxx:329
 TGenCollectionProxy.cxx:330
 TGenCollectionProxy.cxx:331
 TGenCollectionProxy.cxx:332
 TGenCollectionProxy.cxx:333
 TGenCollectionProxy.cxx:334
 TGenCollectionProxy.cxx:335
 TGenCollectionProxy.cxx:336
 TGenCollectionProxy.cxx:337
 TGenCollectionProxy.cxx:338
 TGenCollectionProxy.cxx:339
 TGenCollectionProxy.cxx:340
 TGenCollectionProxy.cxx:341
 TGenCollectionProxy.cxx:342
 TGenCollectionProxy.cxx:343
 TGenCollectionProxy.cxx:344
 TGenCollectionProxy.cxx:345
 TGenCollectionProxy.cxx:346
 TGenCollectionProxy.cxx:347
 TGenCollectionProxy.cxx:348
 TGenCollectionProxy.cxx:349
 TGenCollectionProxy.cxx:350
 TGenCollectionProxy.cxx:351
 TGenCollectionProxy.cxx:352
 TGenCollectionProxy.cxx:353
 TGenCollectionProxy.cxx:354
 TGenCollectionProxy.cxx:355
 TGenCollectionProxy.cxx:356
 TGenCollectionProxy.cxx:357
 TGenCollectionProxy.cxx:358
 TGenCollectionProxy.cxx:359
 TGenCollectionProxy.cxx:360
 TGenCollectionProxy.cxx:361
 TGenCollectionProxy.cxx:362
 TGenCollectionProxy.cxx:363
 TGenCollectionProxy.cxx:364
 TGenCollectionProxy.cxx:365
 TGenCollectionProxy.cxx:366
 TGenCollectionProxy.cxx:367
 TGenCollectionProxy.cxx:368
 TGenCollectionProxy.cxx:369
 TGenCollectionProxy.cxx:370
 TGenCollectionProxy.cxx:371
 TGenCollectionProxy.cxx:372
 TGenCollectionProxy.cxx:373
 TGenCollectionProxy.cxx:374
 TGenCollectionProxy.cxx:375
 TGenCollectionProxy.cxx:376
 TGenCollectionProxy.cxx:377
 TGenCollectionProxy.cxx:378
 TGenCollectionProxy.cxx:379
 TGenCollectionProxy.cxx:380
 TGenCollectionProxy.cxx:381
 TGenCollectionProxy.cxx:382
 TGenCollectionProxy.cxx:383
 TGenCollectionProxy.cxx:384
 TGenCollectionProxy.cxx:385
 TGenCollectionProxy.cxx:386
 TGenCollectionProxy.cxx:387
 TGenCollectionProxy.cxx:388
 TGenCollectionProxy.cxx:389
 TGenCollectionProxy.cxx:390
 TGenCollectionProxy.cxx:391
 TGenCollectionProxy.cxx:392
 TGenCollectionProxy.cxx:393
 TGenCollectionProxy.cxx:394
 TGenCollectionProxy.cxx:395
 TGenCollectionProxy.cxx:396
 TGenCollectionProxy.cxx:397
 TGenCollectionProxy.cxx:398
 TGenCollectionProxy.cxx:399
 TGenCollectionProxy.cxx:400
 TGenCollectionProxy.cxx:401
 TGenCollectionProxy.cxx:402
 TGenCollectionProxy.cxx:403
 TGenCollectionProxy.cxx:404
 TGenCollectionProxy.cxx:405
 TGenCollectionProxy.cxx:406
 TGenCollectionProxy.cxx:407
 TGenCollectionProxy.cxx:408
 TGenCollectionProxy.cxx:409
 TGenCollectionProxy.cxx:410
 TGenCollectionProxy.cxx:411
 TGenCollectionProxy.cxx:412
 TGenCollectionProxy.cxx:413
 TGenCollectionProxy.cxx:414
 TGenCollectionProxy.cxx:415
 TGenCollectionProxy.cxx:416
 TGenCollectionProxy.cxx:417
 TGenCollectionProxy.cxx:418
 TGenCollectionProxy.cxx:419
 TGenCollectionProxy.cxx:420
 TGenCollectionProxy.cxx:421
 TGenCollectionProxy.cxx:422
 TGenCollectionProxy.cxx:423
 TGenCollectionProxy.cxx:424
 TGenCollectionProxy.cxx:425
 TGenCollectionProxy.cxx:426
 TGenCollectionProxy.cxx:427
 TGenCollectionProxy.cxx:428
 TGenCollectionProxy.cxx:429
 TGenCollectionProxy.cxx:430
 TGenCollectionProxy.cxx:431
 TGenCollectionProxy.cxx:432
 TGenCollectionProxy.cxx:433
 TGenCollectionProxy.cxx:434
 TGenCollectionProxy.cxx:435
 TGenCollectionProxy.cxx:436
 TGenCollectionProxy.cxx:437
 TGenCollectionProxy.cxx:438
 TGenCollectionProxy.cxx:439
 TGenCollectionProxy.cxx:440
 TGenCollectionProxy.cxx:441
 TGenCollectionProxy.cxx:442
 TGenCollectionProxy.cxx:443
 TGenCollectionProxy.cxx:444
 TGenCollectionProxy.cxx:445
 TGenCollectionProxy.cxx:446
 TGenCollectionProxy.cxx:447
 TGenCollectionProxy.cxx:448
 TGenCollectionProxy.cxx:449
 TGenCollectionProxy.cxx:450
 TGenCollectionProxy.cxx:451
 TGenCollectionProxy.cxx:452
 TGenCollectionProxy.cxx:453
 TGenCollectionProxy.cxx:454
 TGenCollectionProxy.cxx:455
 TGenCollectionProxy.cxx:456
 TGenCollectionProxy.cxx:457
 TGenCollectionProxy.cxx:458
 TGenCollectionProxy.cxx:459
 TGenCollectionProxy.cxx:460
 TGenCollectionProxy.cxx:461
 TGenCollectionProxy.cxx:462
 TGenCollectionProxy.cxx:463
 TGenCollectionProxy.cxx:464
 TGenCollectionProxy.cxx:465
 TGenCollectionProxy.cxx:466
 TGenCollectionProxy.cxx:467
 TGenCollectionProxy.cxx:468
 TGenCollectionProxy.cxx:469
 TGenCollectionProxy.cxx:470
 TGenCollectionProxy.cxx:471
 TGenCollectionProxy.cxx:472
 TGenCollectionProxy.cxx:473
 TGenCollectionProxy.cxx:474
 TGenCollectionProxy.cxx:475
 TGenCollectionProxy.cxx:476
 TGenCollectionProxy.cxx:477
 TGenCollectionProxy.cxx:478
 TGenCollectionProxy.cxx:479
 TGenCollectionProxy.cxx:480
 TGenCollectionProxy.cxx:481
 TGenCollectionProxy.cxx:482
 TGenCollectionProxy.cxx:483
 TGenCollectionProxy.cxx:484
 TGenCollectionProxy.cxx:485
 TGenCollectionProxy.cxx:486
 TGenCollectionProxy.cxx:487
 TGenCollectionProxy.cxx:488
 TGenCollectionProxy.cxx:489
 TGenCollectionProxy.cxx:490
 TGenCollectionProxy.cxx:491
 TGenCollectionProxy.cxx:492
 TGenCollectionProxy.cxx:493
 TGenCollectionProxy.cxx:494
 TGenCollectionProxy.cxx:495
 TGenCollectionProxy.cxx:496
 TGenCollectionProxy.cxx:497
 TGenCollectionProxy.cxx:498
 TGenCollectionProxy.cxx:499
 TGenCollectionProxy.cxx:500
 TGenCollectionProxy.cxx:501
 TGenCollectionProxy.cxx:502
 TGenCollectionProxy.cxx:503
 TGenCollectionProxy.cxx:504
 TGenCollectionProxy.cxx:505
 TGenCollectionProxy.cxx:506
 TGenCollectionProxy.cxx:507
 TGenCollectionProxy.cxx:508
 TGenCollectionProxy.cxx:509
 TGenCollectionProxy.cxx:510
 TGenCollectionProxy.cxx:511
 TGenCollectionProxy.cxx:512
 TGenCollectionProxy.cxx:513
 TGenCollectionProxy.cxx:514
 TGenCollectionProxy.cxx:515
 TGenCollectionProxy.cxx:516
 TGenCollectionProxy.cxx:517
 TGenCollectionProxy.cxx:518
 TGenCollectionProxy.cxx:519
 TGenCollectionProxy.cxx:520
 TGenCollectionProxy.cxx:521
 TGenCollectionProxy.cxx:522
 TGenCollectionProxy.cxx:523
 TGenCollectionProxy.cxx:524
 TGenCollectionProxy.cxx:525
 TGenCollectionProxy.cxx:526
 TGenCollectionProxy.cxx:527
 TGenCollectionProxy.cxx:528
 TGenCollectionProxy.cxx:529
 TGenCollectionProxy.cxx:530
 TGenCollectionProxy.cxx:531
 TGenCollectionProxy.cxx:532
 TGenCollectionProxy.cxx:533
 TGenCollectionProxy.cxx:534
 TGenCollectionProxy.cxx:535
 TGenCollectionProxy.cxx:536
 TGenCollectionProxy.cxx:537
 TGenCollectionProxy.cxx:538
 TGenCollectionProxy.cxx:539
 TGenCollectionProxy.cxx:540
 TGenCollectionProxy.cxx:541
 TGenCollectionProxy.cxx:542
 TGenCollectionProxy.cxx:543
 TGenCollectionProxy.cxx:544
 TGenCollectionProxy.cxx:545
 TGenCollectionProxy.cxx:546
 TGenCollectionProxy.cxx:547
 TGenCollectionProxy.cxx:548
 TGenCollectionProxy.cxx:549
 TGenCollectionProxy.cxx:550
 TGenCollectionProxy.cxx:551
 TGenCollectionProxy.cxx:552
 TGenCollectionProxy.cxx:553
 TGenCollectionProxy.cxx:554
 TGenCollectionProxy.cxx:555
 TGenCollectionProxy.cxx:556
 TGenCollectionProxy.cxx:557
 TGenCollectionProxy.cxx:558
 TGenCollectionProxy.cxx:559
 TGenCollectionProxy.cxx:560
 TGenCollectionProxy.cxx:561
 TGenCollectionProxy.cxx:562
 TGenCollectionProxy.cxx:563
 TGenCollectionProxy.cxx:564
 TGenCollectionProxy.cxx:565
 TGenCollectionProxy.cxx:566
 TGenCollectionProxy.cxx:567
 TGenCollectionProxy.cxx:568
 TGenCollectionProxy.cxx:569
 TGenCollectionProxy.cxx:570
 TGenCollectionProxy.cxx:571
 TGenCollectionProxy.cxx:572
 TGenCollectionProxy.cxx:573
 TGenCollectionProxy.cxx:574
 TGenCollectionProxy.cxx:575
 TGenCollectionProxy.cxx:576
 TGenCollectionProxy.cxx:577
 TGenCollectionProxy.cxx:578
 TGenCollectionProxy.cxx:579
 TGenCollectionProxy.cxx:580
 TGenCollectionProxy.cxx:581
 TGenCollectionProxy.cxx:582
 TGenCollectionProxy.cxx:583
 TGenCollectionProxy.cxx:584
 TGenCollectionProxy.cxx:585
 TGenCollectionProxy.cxx:586
 TGenCollectionProxy.cxx:587
 TGenCollectionProxy.cxx:588
 TGenCollectionProxy.cxx:589
 TGenCollectionProxy.cxx:590
 TGenCollectionProxy.cxx:591
 TGenCollectionProxy.cxx:592
 TGenCollectionProxy.cxx:593
 TGenCollectionProxy.cxx:594
 TGenCollectionProxy.cxx:595
 TGenCollectionProxy.cxx:596
 TGenCollectionProxy.cxx:597
 TGenCollectionProxy.cxx:598
 TGenCollectionProxy.cxx:599
 TGenCollectionProxy.cxx:600
 TGenCollectionProxy.cxx:601
 TGenCollectionProxy.cxx:602
 TGenCollectionProxy.cxx:603
 TGenCollectionProxy.cxx:604
 TGenCollectionProxy.cxx:605
 TGenCollectionProxy.cxx:606
 TGenCollectionProxy.cxx:607
 TGenCollectionProxy.cxx:608
 TGenCollectionProxy.cxx:609
 TGenCollectionProxy.cxx:610
 TGenCollectionProxy.cxx:611
 TGenCollectionProxy.cxx:612
 TGenCollectionProxy.cxx:613
 TGenCollectionProxy.cxx:614
 TGenCollectionProxy.cxx:615
 TGenCollectionProxy.cxx:616
 TGenCollectionProxy.cxx:617
 TGenCollectionProxy.cxx:618
 TGenCollectionProxy.cxx:619
 TGenCollectionProxy.cxx:620
 TGenCollectionProxy.cxx:621
 TGenCollectionProxy.cxx:622
 TGenCollectionProxy.cxx:623
 TGenCollectionProxy.cxx:624
 TGenCollectionProxy.cxx:625
 TGenCollectionProxy.cxx:626
 TGenCollectionProxy.cxx:627
 TGenCollectionProxy.cxx:628
 TGenCollectionProxy.cxx:629
 TGenCollectionProxy.cxx:630
 TGenCollectionProxy.cxx:631
 TGenCollectionProxy.cxx:632
 TGenCollectionProxy.cxx:633
 TGenCollectionProxy.cxx:634
 TGenCollectionProxy.cxx:635
 TGenCollectionProxy.cxx:636
 TGenCollectionProxy.cxx:637
 TGenCollectionProxy.cxx:638
 TGenCollectionProxy.cxx:639
 TGenCollectionProxy.cxx:640
 TGenCollectionProxy.cxx:641
 TGenCollectionProxy.cxx:642
 TGenCollectionProxy.cxx:643
 TGenCollectionProxy.cxx:644
 TGenCollectionProxy.cxx:645
 TGenCollectionProxy.cxx:646
 TGenCollectionProxy.cxx:647
 TGenCollectionProxy.cxx:648
 TGenCollectionProxy.cxx:649
 TGenCollectionProxy.cxx:650
 TGenCollectionProxy.cxx:651
 TGenCollectionProxy.cxx:652
 TGenCollectionProxy.cxx:653
 TGenCollectionProxy.cxx:654
 TGenCollectionProxy.cxx:655
 TGenCollectionProxy.cxx:656
 TGenCollectionProxy.cxx:657
 TGenCollectionProxy.cxx:658
 TGenCollectionProxy.cxx:659
 TGenCollectionProxy.cxx:660
 TGenCollectionProxy.cxx:661
 TGenCollectionProxy.cxx:662
 TGenCollectionProxy.cxx:663
 TGenCollectionProxy.cxx:664
 TGenCollectionProxy.cxx:665
 TGenCollectionProxy.cxx:666
 TGenCollectionProxy.cxx:667
 TGenCollectionProxy.cxx:668
 TGenCollectionProxy.cxx:669
 TGenCollectionProxy.cxx:670
 TGenCollectionProxy.cxx:671
 TGenCollectionProxy.cxx:672
 TGenCollectionProxy.cxx:673
 TGenCollectionProxy.cxx:674
 TGenCollectionProxy.cxx:675
 TGenCollectionProxy.cxx:676
 TGenCollectionProxy.cxx:677
 TGenCollectionProxy.cxx:678
 TGenCollectionProxy.cxx:679
 TGenCollectionProxy.cxx:680
 TGenCollectionProxy.cxx:681
 TGenCollectionProxy.cxx:682
 TGenCollectionProxy.cxx:683
 TGenCollectionProxy.cxx:684
 TGenCollectionProxy.cxx:685
 TGenCollectionProxy.cxx:686
 TGenCollectionProxy.cxx:687
 TGenCollectionProxy.cxx:688
 TGenCollectionProxy.cxx:689
 TGenCollectionProxy.cxx:690
 TGenCollectionProxy.cxx:691
 TGenCollectionProxy.cxx:692
 TGenCollectionProxy.cxx:693
 TGenCollectionProxy.cxx:694
 TGenCollectionProxy.cxx:695
 TGenCollectionProxy.cxx:696
 TGenCollectionProxy.cxx:697
 TGenCollectionProxy.cxx:698
 TGenCollectionProxy.cxx:699
 TGenCollectionProxy.cxx:700
 TGenCollectionProxy.cxx:701
 TGenCollectionProxy.cxx:702
 TGenCollectionProxy.cxx:703
 TGenCollectionProxy.cxx:704
 TGenCollectionProxy.cxx:705
 TGenCollectionProxy.cxx:706
 TGenCollectionProxy.cxx:707
 TGenCollectionProxy.cxx:708
 TGenCollectionProxy.cxx:709
 TGenCollectionProxy.cxx:710
 TGenCollectionProxy.cxx:711
 TGenCollectionProxy.cxx:712
 TGenCollectionProxy.cxx:713
 TGenCollectionProxy.cxx:714
 TGenCollectionProxy.cxx:715
 TGenCollectionProxy.cxx:716
 TGenCollectionProxy.cxx:717
 TGenCollectionProxy.cxx:718
 TGenCollectionProxy.cxx:719
 TGenCollectionProxy.cxx:720
 TGenCollectionProxy.cxx:721
 TGenCollectionProxy.cxx:722
 TGenCollectionProxy.cxx:723
 TGenCollectionProxy.cxx:724
 TGenCollectionProxy.cxx:725
 TGenCollectionProxy.cxx:726
 TGenCollectionProxy.cxx:727
 TGenCollectionProxy.cxx:728
 TGenCollectionProxy.cxx:729
 TGenCollectionProxy.cxx:730
 TGenCollectionProxy.cxx:731
 TGenCollectionProxy.cxx:732
 TGenCollectionProxy.cxx:733
 TGenCollectionProxy.cxx:734
 TGenCollectionProxy.cxx:735
 TGenCollectionProxy.cxx:736
 TGenCollectionProxy.cxx:737
 TGenCollectionProxy.cxx:738
 TGenCollectionProxy.cxx:739
 TGenCollectionProxy.cxx:740
 TGenCollectionProxy.cxx:741
 TGenCollectionProxy.cxx:742
 TGenCollectionProxy.cxx:743
 TGenCollectionProxy.cxx:744
 TGenCollectionProxy.cxx:745
 TGenCollectionProxy.cxx:746
 TGenCollectionProxy.cxx:747
 TGenCollectionProxy.cxx:748
 TGenCollectionProxy.cxx:749
 TGenCollectionProxy.cxx:750
 TGenCollectionProxy.cxx:751
 TGenCollectionProxy.cxx:752
 TGenCollectionProxy.cxx:753
 TGenCollectionProxy.cxx:754
 TGenCollectionProxy.cxx:755
 TGenCollectionProxy.cxx:756
 TGenCollectionProxy.cxx:757
 TGenCollectionProxy.cxx:758
 TGenCollectionProxy.cxx:759
 TGenCollectionProxy.cxx:760
 TGenCollectionProxy.cxx:761
 TGenCollectionProxy.cxx:762
 TGenCollectionProxy.cxx:763
 TGenCollectionProxy.cxx:764
 TGenCollectionProxy.cxx:765
 TGenCollectionProxy.cxx:766
 TGenCollectionProxy.cxx:767
 TGenCollectionProxy.cxx:768
 TGenCollectionProxy.cxx:769
 TGenCollectionProxy.cxx:770
 TGenCollectionProxy.cxx:771
 TGenCollectionProxy.cxx:772
 TGenCollectionProxy.cxx:773
 TGenCollectionProxy.cxx:774
 TGenCollectionProxy.cxx:775
 TGenCollectionProxy.cxx:776
 TGenCollectionProxy.cxx:777
 TGenCollectionProxy.cxx:778
 TGenCollectionProxy.cxx:779
 TGenCollectionProxy.cxx:780
 TGenCollectionProxy.cxx:781
 TGenCollectionProxy.cxx:782
 TGenCollectionProxy.cxx:783
 TGenCollectionProxy.cxx:784
 TGenCollectionProxy.cxx:785
 TGenCollectionProxy.cxx:786
 TGenCollectionProxy.cxx:787
 TGenCollectionProxy.cxx:788
 TGenCollectionProxy.cxx:789
 TGenCollectionProxy.cxx:790
 TGenCollectionProxy.cxx:791
 TGenCollectionProxy.cxx:792
 TGenCollectionProxy.cxx:793
 TGenCollectionProxy.cxx:794
 TGenCollectionProxy.cxx:795
 TGenCollectionProxy.cxx:796
 TGenCollectionProxy.cxx:797
 TGenCollectionProxy.cxx:798
 TGenCollectionProxy.cxx:799
 TGenCollectionProxy.cxx:800
 TGenCollectionProxy.cxx:801
 TGenCollectionProxy.cxx:802
 TGenCollectionProxy.cxx:803
 TGenCollectionProxy.cxx:804
 TGenCollectionProxy.cxx:805
 TGenCollectionProxy.cxx:806
 TGenCollectionProxy.cxx:807
 TGenCollectionProxy.cxx:808
 TGenCollectionProxy.cxx:809
 TGenCollectionProxy.cxx:810
 TGenCollectionProxy.cxx:811
 TGenCollectionProxy.cxx:812
 TGenCollectionProxy.cxx:813
 TGenCollectionProxy.cxx:814
 TGenCollectionProxy.cxx:815
 TGenCollectionProxy.cxx:816
 TGenCollectionProxy.cxx:817
 TGenCollectionProxy.cxx:818
 TGenCollectionProxy.cxx:819
 TGenCollectionProxy.cxx:820
 TGenCollectionProxy.cxx:821
 TGenCollectionProxy.cxx:822
 TGenCollectionProxy.cxx:823
 TGenCollectionProxy.cxx:824
 TGenCollectionProxy.cxx:825
 TGenCollectionProxy.cxx:826
 TGenCollectionProxy.cxx:827
 TGenCollectionProxy.cxx:828
 TGenCollectionProxy.cxx:829
 TGenCollectionProxy.cxx:830
 TGenCollectionProxy.cxx:831
 TGenCollectionProxy.cxx:832
 TGenCollectionProxy.cxx:833
 TGenCollectionProxy.cxx:834
 TGenCollectionProxy.cxx:835
 TGenCollectionProxy.cxx:836
 TGenCollectionProxy.cxx:837
 TGenCollectionProxy.cxx:838
 TGenCollectionProxy.cxx:839
 TGenCollectionProxy.cxx:840
 TGenCollectionProxy.cxx:841
 TGenCollectionProxy.cxx:842
 TGenCollectionProxy.cxx:843
 TGenCollectionProxy.cxx:844
 TGenCollectionProxy.cxx:845
 TGenCollectionProxy.cxx:846
 TGenCollectionProxy.cxx:847
 TGenCollectionProxy.cxx:848
 TGenCollectionProxy.cxx:849
 TGenCollectionProxy.cxx:850
 TGenCollectionProxy.cxx:851
 TGenCollectionProxy.cxx:852
 TGenCollectionProxy.cxx:853
 TGenCollectionProxy.cxx:854
 TGenCollectionProxy.cxx:855
 TGenCollectionProxy.cxx:856
 TGenCollectionProxy.cxx:857
 TGenCollectionProxy.cxx:858
 TGenCollectionProxy.cxx:859
 TGenCollectionProxy.cxx:860
 TGenCollectionProxy.cxx:861
 TGenCollectionProxy.cxx:862
 TGenCollectionProxy.cxx:863
 TGenCollectionProxy.cxx:864
 TGenCollectionProxy.cxx:865
 TGenCollectionProxy.cxx:866
 TGenCollectionProxy.cxx:867
 TGenCollectionProxy.cxx:868
 TGenCollectionProxy.cxx:869
 TGenCollectionProxy.cxx:870
 TGenCollectionProxy.cxx:871
 TGenCollectionProxy.cxx:872
 TGenCollectionProxy.cxx:873
 TGenCollectionProxy.cxx:874
 TGenCollectionProxy.cxx:875
 TGenCollectionProxy.cxx:876
 TGenCollectionProxy.cxx:877
 TGenCollectionProxy.cxx:878
 TGenCollectionProxy.cxx:879
 TGenCollectionProxy.cxx:880
 TGenCollectionProxy.cxx:881
 TGenCollectionProxy.cxx:882
 TGenCollectionProxy.cxx:883
 TGenCollectionProxy.cxx:884
 TGenCollectionProxy.cxx:885
 TGenCollectionProxy.cxx:886
 TGenCollectionProxy.cxx:887
 TGenCollectionProxy.cxx:888
 TGenCollectionProxy.cxx:889
 TGenCollectionProxy.cxx:890
 TGenCollectionProxy.cxx:891
 TGenCollectionProxy.cxx:892
 TGenCollectionProxy.cxx:893
 TGenCollectionProxy.cxx:894
 TGenCollectionProxy.cxx:895
 TGenCollectionProxy.cxx:896
 TGenCollectionProxy.cxx:897
 TGenCollectionProxy.cxx:898
 TGenCollectionProxy.cxx:899
 TGenCollectionProxy.cxx:900
 TGenCollectionProxy.cxx:901
 TGenCollectionProxy.cxx:902
 TGenCollectionProxy.cxx:903
 TGenCollectionProxy.cxx:904
 TGenCollectionProxy.cxx:905
 TGenCollectionProxy.cxx:906
 TGenCollectionProxy.cxx:907
 TGenCollectionProxy.cxx:908
 TGenCollectionProxy.cxx:909
 TGenCollectionProxy.cxx:910
 TGenCollectionProxy.cxx:911
 TGenCollectionProxy.cxx:912
 TGenCollectionProxy.cxx:913
 TGenCollectionProxy.cxx:914
 TGenCollectionProxy.cxx:915
 TGenCollectionProxy.cxx:916
 TGenCollectionProxy.cxx:917
 TGenCollectionProxy.cxx:918
 TGenCollectionProxy.cxx:919
 TGenCollectionProxy.cxx:920
 TGenCollectionProxy.cxx:921
 TGenCollectionProxy.cxx:922
 TGenCollectionProxy.cxx:923
 TGenCollectionProxy.cxx:924
 TGenCollectionProxy.cxx:925
 TGenCollectionProxy.cxx:926
 TGenCollectionProxy.cxx:927
 TGenCollectionProxy.cxx:928
 TGenCollectionProxy.cxx:929
 TGenCollectionProxy.cxx:930
 TGenCollectionProxy.cxx:931
 TGenCollectionProxy.cxx:932
 TGenCollectionProxy.cxx:933
 TGenCollectionProxy.cxx:934
 TGenCollectionProxy.cxx:935
 TGenCollectionProxy.cxx:936
 TGenCollectionProxy.cxx:937
 TGenCollectionProxy.cxx:938
 TGenCollectionProxy.cxx:939
 TGenCollectionProxy.cxx:940
 TGenCollectionProxy.cxx:941
 TGenCollectionProxy.cxx:942
 TGenCollectionProxy.cxx:943
 TGenCollectionProxy.cxx:944
 TGenCollectionProxy.cxx:945
 TGenCollectionProxy.cxx:946
 TGenCollectionProxy.cxx:947
 TGenCollectionProxy.cxx:948
 TGenCollectionProxy.cxx:949
 TGenCollectionProxy.cxx:950
 TGenCollectionProxy.cxx:951
 TGenCollectionProxy.cxx:952
 TGenCollectionProxy.cxx:953
 TGenCollectionProxy.cxx:954
 TGenCollectionProxy.cxx:955
 TGenCollectionProxy.cxx:956
 TGenCollectionProxy.cxx:957
 TGenCollectionProxy.cxx:958
 TGenCollectionProxy.cxx:959
 TGenCollectionProxy.cxx:960
 TGenCollectionProxy.cxx:961
 TGenCollectionProxy.cxx:962
 TGenCollectionProxy.cxx:963
 TGenCollectionProxy.cxx:964
 TGenCollectionProxy.cxx:965
 TGenCollectionProxy.cxx:966
 TGenCollectionProxy.cxx:967
 TGenCollectionProxy.cxx:968
 TGenCollectionProxy.cxx:969
 TGenCollectionProxy.cxx:970
 TGenCollectionProxy.cxx:971
 TGenCollectionProxy.cxx:972
 TGenCollectionProxy.cxx:973
 TGenCollectionProxy.cxx:974
 TGenCollectionProxy.cxx:975
 TGenCollectionProxy.cxx:976
 TGenCollectionProxy.cxx:977
 TGenCollectionProxy.cxx:978
 TGenCollectionProxy.cxx:979
 TGenCollectionProxy.cxx:980
 TGenCollectionProxy.cxx:981
 TGenCollectionProxy.cxx:982
 TGenCollectionProxy.cxx:983
 TGenCollectionProxy.cxx:984
 TGenCollectionProxy.cxx:985
 TGenCollectionProxy.cxx:986
 TGenCollectionProxy.cxx:987
 TGenCollectionProxy.cxx:988
 TGenCollectionProxy.cxx:989
 TGenCollectionProxy.cxx:990
 TGenCollectionProxy.cxx:991
 TGenCollectionProxy.cxx:992
 TGenCollectionProxy.cxx:993
 TGenCollectionProxy.cxx:994
 TGenCollectionProxy.cxx:995
 TGenCollectionProxy.cxx:996
 TGenCollectionProxy.cxx:997
 TGenCollectionProxy.cxx:998
 TGenCollectionProxy.cxx:999
 TGenCollectionProxy.cxx:1000
 TGenCollectionProxy.cxx:1001
 TGenCollectionProxy.cxx:1002
 TGenCollectionProxy.cxx:1003
 TGenCollectionProxy.cxx:1004
 TGenCollectionProxy.cxx:1005
 TGenCollectionProxy.cxx:1006
 TGenCollectionProxy.cxx:1007
 TGenCollectionProxy.cxx:1008
 TGenCollectionProxy.cxx:1009
 TGenCollectionProxy.cxx:1010
 TGenCollectionProxy.cxx:1011
 TGenCollectionProxy.cxx:1012
 TGenCollectionProxy.cxx:1013
 TGenCollectionProxy.cxx:1014
 TGenCollectionProxy.cxx:1015
 TGenCollectionProxy.cxx:1016
 TGenCollectionProxy.cxx:1017
 TGenCollectionProxy.cxx:1018
 TGenCollectionProxy.cxx:1019
 TGenCollectionProxy.cxx:1020
 TGenCollectionProxy.cxx:1021
 TGenCollectionProxy.cxx:1022
 TGenCollectionProxy.cxx:1023
 TGenCollectionProxy.cxx:1024
 TGenCollectionProxy.cxx:1025
 TGenCollectionProxy.cxx:1026
 TGenCollectionProxy.cxx:1027
 TGenCollectionProxy.cxx:1028
 TGenCollectionProxy.cxx:1029
 TGenCollectionProxy.cxx:1030
 TGenCollectionProxy.cxx:1031
 TGenCollectionProxy.cxx:1032
 TGenCollectionProxy.cxx:1033
 TGenCollectionProxy.cxx:1034
 TGenCollectionProxy.cxx:1035
 TGenCollectionProxy.cxx:1036
 TGenCollectionProxy.cxx:1037
 TGenCollectionProxy.cxx:1038
 TGenCollectionProxy.cxx:1039
 TGenCollectionProxy.cxx:1040
 TGenCollectionProxy.cxx:1041
 TGenCollectionProxy.cxx:1042
 TGenCollectionProxy.cxx:1043
 TGenCollectionProxy.cxx:1044
 TGenCollectionProxy.cxx:1045
 TGenCollectionProxy.cxx:1046
 TGenCollectionProxy.cxx:1047
 TGenCollectionProxy.cxx:1048
 TGenCollectionProxy.cxx:1049
 TGenCollectionProxy.cxx:1050
 TGenCollectionProxy.cxx:1051
 TGenCollectionProxy.cxx:1052
 TGenCollectionProxy.cxx:1053
 TGenCollectionProxy.cxx:1054
 TGenCollectionProxy.cxx:1055
 TGenCollectionProxy.cxx:1056
 TGenCollectionProxy.cxx:1057
 TGenCollectionProxy.cxx:1058
 TGenCollectionProxy.cxx:1059
 TGenCollectionProxy.cxx:1060
 TGenCollectionProxy.cxx:1061
 TGenCollectionProxy.cxx:1062
 TGenCollectionProxy.cxx:1063
 TGenCollectionProxy.cxx:1064
 TGenCollectionProxy.cxx:1065
 TGenCollectionProxy.cxx:1066
 TGenCollectionProxy.cxx:1067
 TGenCollectionProxy.cxx:1068
 TGenCollectionProxy.cxx:1069
 TGenCollectionProxy.cxx:1070
 TGenCollectionProxy.cxx:1071
 TGenCollectionProxy.cxx:1072
 TGenCollectionProxy.cxx:1073
 TGenCollectionProxy.cxx:1074
 TGenCollectionProxy.cxx:1075
 TGenCollectionProxy.cxx:1076
 TGenCollectionProxy.cxx:1077
 TGenCollectionProxy.cxx:1078
 TGenCollectionProxy.cxx:1079
 TGenCollectionProxy.cxx:1080
 TGenCollectionProxy.cxx:1081
 TGenCollectionProxy.cxx:1082
 TGenCollectionProxy.cxx:1083
 TGenCollectionProxy.cxx:1084
 TGenCollectionProxy.cxx:1085
 TGenCollectionProxy.cxx:1086
 TGenCollectionProxy.cxx:1087
 TGenCollectionProxy.cxx:1088
 TGenCollectionProxy.cxx:1089
 TGenCollectionProxy.cxx:1090
 TGenCollectionProxy.cxx:1091
 TGenCollectionProxy.cxx:1092
 TGenCollectionProxy.cxx:1093
 TGenCollectionProxy.cxx:1094
 TGenCollectionProxy.cxx:1095
 TGenCollectionProxy.cxx:1096
 TGenCollectionProxy.cxx:1097
 TGenCollectionProxy.cxx:1098
 TGenCollectionProxy.cxx:1099
 TGenCollectionProxy.cxx:1100
 TGenCollectionProxy.cxx:1101
 TGenCollectionProxy.cxx:1102
 TGenCollectionProxy.cxx:1103
 TGenCollectionProxy.cxx:1104
 TGenCollectionProxy.cxx:1105
 TGenCollectionProxy.cxx:1106
 TGenCollectionProxy.cxx:1107
 TGenCollectionProxy.cxx:1108
 TGenCollectionProxy.cxx:1109
 TGenCollectionProxy.cxx:1110
 TGenCollectionProxy.cxx:1111
 TGenCollectionProxy.cxx:1112
 TGenCollectionProxy.cxx:1113
 TGenCollectionProxy.cxx:1114
 TGenCollectionProxy.cxx:1115
 TGenCollectionProxy.cxx:1116
 TGenCollectionProxy.cxx:1117
 TGenCollectionProxy.cxx:1118
 TGenCollectionProxy.cxx:1119
 TGenCollectionProxy.cxx:1120
 TGenCollectionProxy.cxx:1121
 TGenCollectionProxy.cxx:1122
 TGenCollectionProxy.cxx:1123
 TGenCollectionProxy.cxx:1124
 TGenCollectionProxy.cxx:1125
 TGenCollectionProxy.cxx:1126
 TGenCollectionProxy.cxx:1127
 TGenCollectionProxy.cxx:1128
 TGenCollectionProxy.cxx:1129
 TGenCollectionProxy.cxx:1130
 TGenCollectionProxy.cxx:1131
 TGenCollectionProxy.cxx:1132
 TGenCollectionProxy.cxx:1133
 TGenCollectionProxy.cxx:1134
 TGenCollectionProxy.cxx:1135
 TGenCollectionProxy.cxx:1136
 TGenCollectionProxy.cxx:1137
 TGenCollectionProxy.cxx:1138
 TGenCollectionProxy.cxx:1139
 TGenCollectionProxy.cxx:1140
 TGenCollectionProxy.cxx:1141
 TGenCollectionProxy.cxx:1142
 TGenCollectionProxy.cxx:1143
 TGenCollectionProxy.cxx:1144
 TGenCollectionProxy.cxx:1145
 TGenCollectionProxy.cxx:1146
 TGenCollectionProxy.cxx:1147
 TGenCollectionProxy.cxx:1148
 TGenCollectionProxy.cxx:1149
 TGenCollectionProxy.cxx:1150
 TGenCollectionProxy.cxx:1151
 TGenCollectionProxy.cxx:1152
 TGenCollectionProxy.cxx:1153
 TGenCollectionProxy.cxx:1154
 TGenCollectionProxy.cxx:1155
 TGenCollectionProxy.cxx:1156
 TGenCollectionProxy.cxx:1157
 TGenCollectionProxy.cxx:1158
 TGenCollectionProxy.cxx:1159
 TGenCollectionProxy.cxx:1160
 TGenCollectionProxy.cxx:1161
 TGenCollectionProxy.cxx:1162
 TGenCollectionProxy.cxx:1163
 TGenCollectionProxy.cxx:1164
 TGenCollectionProxy.cxx:1165
 TGenCollectionProxy.cxx:1166
 TGenCollectionProxy.cxx:1167
 TGenCollectionProxy.cxx:1168
 TGenCollectionProxy.cxx:1169
 TGenCollectionProxy.cxx:1170
 TGenCollectionProxy.cxx:1171
 TGenCollectionProxy.cxx:1172
 TGenCollectionProxy.cxx:1173
 TGenCollectionProxy.cxx:1174
 TGenCollectionProxy.cxx:1175
 TGenCollectionProxy.cxx:1176
 TGenCollectionProxy.cxx:1177
 TGenCollectionProxy.cxx:1178
 TGenCollectionProxy.cxx:1179
 TGenCollectionProxy.cxx:1180
 TGenCollectionProxy.cxx:1181
 TGenCollectionProxy.cxx:1182
 TGenCollectionProxy.cxx:1183
 TGenCollectionProxy.cxx:1184
 TGenCollectionProxy.cxx:1185
 TGenCollectionProxy.cxx:1186
 TGenCollectionProxy.cxx:1187
 TGenCollectionProxy.cxx:1188
 TGenCollectionProxy.cxx:1189
 TGenCollectionProxy.cxx:1190
 TGenCollectionProxy.cxx:1191
 TGenCollectionProxy.cxx:1192
 TGenCollectionProxy.cxx:1193
 TGenCollectionProxy.cxx:1194
 TGenCollectionProxy.cxx:1195
 TGenCollectionProxy.cxx:1196
 TGenCollectionProxy.cxx:1197
 TGenCollectionProxy.cxx:1198
 TGenCollectionProxy.cxx:1199
 TGenCollectionProxy.cxx:1200
 TGenCollectionProxy.cxx:1201
 TGenCollectionProxy.cxx:1202
 TGenCollectionProxy.cxx:1203
 TGenCollectionProxy.cxx:1204
 TGenCollectionProxy.cxx:1205
 TGenCollectionProxy.cxx:1206
 TGenCollectionProxy.cxx:1207
 TGenCollectionProxy.cxx:1208
 TGenCollectionProxy.cxx:1209
 TGenCollectionProxy.cxx:1210
 TGenCollectionProxy.cxx:1211
 TGenCollectionProxy.cxx:1212
 TGenCollectionProxy.cxx:1213
 TGenCollectionProxy.cxx:1214
 TGenCollectionProxy.cxx:1215
 TGenCollectionProxy.cxx:1216
 TGenCollectionProxy.cxx:1217
 TGenCollectionProxy.cxx:1218
 TGenCollectionProxy.cxx:1219
 TGenCollectionProxy.cxx:1220
 TGenCollectionProxy.cxx:1221
 TGenCollectionProxy.cxx:1222
 TGenCollectionProxy.cxx:1223
 TGenCollectionProxy.cxx:1224
 TGenCollectionProxy.cxx:1225
 TGenCollectionProxy.cxx:1226
 TGenCollectionProxy.cxx:1227
 TGenCollectionProxy.cxx:1228
 TGenCollectionProxy.cxx:1229
 TGenCollectionProxy.cxx:1230
 TGenCollectionProxy.cxx:1231
 TGenCollectionProxy.cxx:1232
 TGenCollectionProxy.cxx:1233
 TGenCollectionProxy.cxx:1234
 TGenCollectionProxy.cxx:1235
 TGenCollectionProxy.cxx:1236
 TGenCollectionProxy.cxx:1237
 TGenCollectionProxy.cxx:1238
 TGenCollectionProxy.cxx:1239
 TGenCollectionProxy.cxx:1240
 TGenCollectionProxy.cxx:1241
 TGenCollectionProxy.cxx:1242
 TGenCollectionProxy.cxx:1243
 TGenCollectionProxy.cxx:1244
 TGenCollectionProxy.cxx:1245
 TGenCollectionProxy.cxx:1246
 TGenCollectionProxy.cxx:1247
 TGenCollectionProxy.cxx:1248
 TGenCollectionProxy.cxx:1249
 TGenCollectionProxy.cxx:1250
 TGenCollectionProxy.cxx:1251
 TGenCollectionProxy.cxx:1252
 TGenCollectionProxy.cxx:1253
 TGenCollectionProxy.cxx:1254
 TGenCollectionProxy.cxx:1255
 TGenCollectionProxy.cxx:1256
 TGenCollectionProxy.cxx:1257
 TGenCollectionProxy.cxx:1258
 TGenCollectionProxy.cxx:1259
 TGenCollectionProxy.cxx:1260
 TGenCollectionProxy.cxx:1261
 TGenCollectionProxy.cxx:1262
 TGenCollectionProxy.cxx:1263
 TGenCollectionProxy.cxx:1264
 TGenCollectionProxy.cxx:1265
 TGenCollectionProxy.cxx:1266
 TGenCollectionProxy.cxx:1267
 TGenCollectionProxy.cxx:1268
 TGenCollectionProxy.cxx:1269
 TGenCollectionProxy.cxx:1270
 TGenCollectionProxy.cxx:1271
 TGenCollectionProxy.cxx:1272
 TGenCollectionProxy.cxx:1273
 TGenCollectionProxy.cxx:1274
 TGenCollectionProxy.cxx:1275
 TGenCollectionProxy.cxx:1276
 TGenCollectionProxy.cxx:1277
 TGenCollectionProxy.cxx:1278
 TGenCollectionProxy.cxx:1279
 TGenCollectionProxy.cxx:1280
 TGenCollectionProxy.cxx:1281
 TGenCollectionProxy.cxx:1282
 TGenCollectionProxy.cxx:1283
 TGenCollectionProxy.cxx:1284
 TGenCollectionProxy.cxx:1285
 TGenCollectionProxy.cxx:1286
 TGenCollectionProxy.cxx:1287
 TGenCollectionProxy.cxx:1288
 TGenCollectionProxy.cxx:1289
 TGenCollectionProxy.cxx:1290
 TGenCollectionProxy.cxx:1291
 TGenCollectionProxy.cxx:1292
 TGenCollectionProxy.cxx:1293
 TGenCollectionProxy.cxx:1294
 TGenCollectionProxy.cxx:1295
 TGenCollectionProxy.cxx:1296
 TGenCollectionProxy.cxx:1297
 TGenCollectionProxy.cxx:1298
 TGenCollectionProxy.cxx:1299
 TGenCollectionProxy.cxx:1300
 TGenCollectionProxy.cxx:1301
 TGenCollectionProxy.cxx:1302
 TGenCollectionProxy.cxx:1303
 TGenCollectionProxy.cxx:1304
 TGenCollectionProxy.cxx:1305
 TGenCollectionProxy.cxx:1306
 TGenCollectionProxy.cxx:1307
 TGenCollectionProxy.cxx:1308
 TGenCollectionProxy.cxx:1309
 TGenCollectionProxy.cxx:1310
 TGenCollectionProxy.cxx:1311
 TGenCollectionProxy.cxx:1312
 TGenCollectionProxy.cxx:1313
 TGenCollectionProxy.cxx:1314
 TGenCollectionProxy.cxx:1315
 TGenCollectionProxy.cxx:1316
 TGenCollectionProxy.cxx:1317
 TGenCollectionProxy.cxx:1318
 TGenCollectionProxy.cxx:1319
 TGenCollectionProxy.cxx:1320
 TGenCollectionProxy.cxx:1321
 TGenCollectionProxy.cxx:1322
 TGenCollectionProxy.cxx:1323
 TGenCollectionProxy.cxx:1324
 TGenCollectionProxy.cxx:1325
 TGenCollectionProxy.cxx:1326
 TGenCollectionProxy.cxx:1327
 TGenCollectionProxy.cxx:1328
 TGenCollectionProxy.cxx:1329
 TGenCollectionProxy.cxx:1330
 TGenCollectionProxy.cxx:1331
 TGenCollectionProxy.cxx:1332
 TGenCollectionProxy.cxx:1333
 TGenCollectionProxy.cxx:1334
 TGenCollectionProxy.cxx:1335
 TGenCollectionProxy.cxx:1336
 TGenCollectionProxy.cxx:1337
 TGenCollectionProxy.cxx:1338
 TGenCollectionProxy.cxx:1339
 TGenCollectionProxy.cxx:1340
 TGenCollectionProxy.cxx:1341
 TGenCollectionProxy.cxx:1342
 TGenCollectionProxy.cxx:1343
 TGenCollectionProxy.cxx:1344
 TGenCollectionProxy.cxx:1345
 TGenCollectionProxy.cxx:1346
 TGenCollectionProxy.cxx:1347
 TGenCollectionProxy.cxx:1348
 TGenCollectionProxy.cxx:1349
 TGenCollectionProxy.cxx:1350
 TGenCollectionProxy.cxx:1351
 TGenCollectionProxy.cxx:1352
 TGenCollectionProxy.cxx:1353
 TGenCollectionProxy.cxx:1354
 TGenCollectionProxy.cxx:1355
 TGenCollectionProxy.cxx:1356
 TGenCollectionProxy.cxx:1357
 TGenCollectionProxy.cxx:1358
 TGenCollectionProxy.cxx:1359
 TGenCollectionProxy.cxx:1360
 TGenCollectionProxy.cxx:1361
 TGenCollectionProxy.cxx:1362
 TGenCollectionProxy.cxx:1363
 TGenCollectionProxy.cxx:1364
 TGenCollectionProxy.cxx:1365
 TGenCollectionProxy.cxx:1366
 TGenCollectionProxy.cxx:1367
 TGenCollectionProxy.cxx:1368
 TGenCollectionProxy.cxx:1369
 TGenCollectionProxy.cxx:1370
 TGenCollectionProxy.cxx:1371
 TGenCollectionProxy.cxx:1372
 TGenCollectionProxy.cxx:1373
 TGenCollectionProxy.cxx:1374
 TGenCollectionProxy.cxx:1375
 TGenCollectionProxy.cxx:1376
 TGenCollectionProxy.cxx:1377
 TGenCollectionProxy.cxx:1378
 TGenCollectionProxy.cxx:1379
 TGenCollectionProxy.cxx:1380
 TGenCollectionProxy.cxx:1381
 TGenCollectionProxy.cxx:1382
 TGenCollectionProxy.cxx:1383
 TGenCollectionProxy.cxx:1384
 TGenCollectionProxy.cxx:1385
 TGenCollectionProxy.cxx:1386
 TGenCollectionProxy.cxx:1387
 TGenCollectionProxy.cxx:1388
 TGenCollectionProxy.cxx:1389
 TGenCollectionProxy.cxx:1390
 TGenCollectionProxy.cxx:1391
 TGenCollectionProxy.cxx:1392
 TGenCollectionProxy.cxx:1393
 TGenCollectionProxy.cxx:1394
 TGenCollectionProxy.cxx:1395
 TGenCollectionProxy.cxx:1396
 TGenCollectionProxy.cxx:1397
 TGenCollectionProxy.cxx:1398
 TGenCollectionProxy.cxx:1399
 TGenCollectionProxy.cxx:1400
 TGenCollectionProxy.cxx:1401
 TGenCollectionProxy.cxx:1402
 TGenCollectionProxy.cxx:1403
 TGenCollectionProxy.cxx:1404
 TGenCollectionProxy.cxx:1405
 TGenCollectionProxy.cxx:1406
 TGenCollectionProxy.cxx:1407
 TGenCollectionProxy.cxx:1408
 TGenCollectionProxy.cxx:1409
 TGenCollectionProxy.cxx:1410
 TGenCollectionProxy.cxx:1411
 TGenCollectionProxy.cxx:1412
 TGenCollectionProxy.cxx:1413
 TGenCollectionProxy.cxx:1414
 TGenCollectionProxy.cxx:1415
 TGenCollectionProxy.cxx:1416
 TGenCollectionProxy.cxx:1417
 TGenCollectionProxy.cxx:1418
 TGenCollectionProxy.cxx:1419
 TGenCollectionProxy.cxx:1420
 TGenCollectionProxy.cxx:1421
 TGenCollectionProxy.cxx:1422
 TGenCollectionProxy.cxx:1423
 TGenCollectionProxy.cxx:1424
 TGenCollectionProxy.cxx:1425
 TGenCollectionProxy.cxx:1426
 TGenCollectionProxy.cxx:1427
 TGenCollectionProxy.cxx:1428
 TGenCollectionProxy.cxx:1429
 TGenCollectionProxy.cxx:1430
 TGenCollectionProxy.cxx:1431
 TGenCollectionProxy.cxx:1432
 TGenCollectionProxy.cxx:1433
 TGenCollectionProxy.cxx:1434
 TGenCollectionProxy.cxx:1435
 TGenCollectionProxy.cxx:1436
 TGenCollectionProxy.cxx:1437
 TGenCollectionProxy.cxx:1438
 TGenCollectionProxy.cxx:1439
 TGenCollectionProxy.cxx:1440
 TGenCollectionProxy.cxx:1441
 TGenCollectionProxy.cxx:1442
 TGenCollectionProxy.cxx:1443
 TGenCollectionProxy.cxx:1444
 TGenCollectionProxy.cxx:1445
 TGenCollectionProxy.cxx:1446
 TGenCollectionProxy.cxx:1447
 TGenCollectionProxy.cxx:1448
 TGenCollectionProxy.cxx:1449
 TGenCollectionProxy.cxx:1450
 TGenCollectionProxy.cxx:1451
 TGenCollectionProxy.cxx:1452
 TGenCollectionProxy.cxx:1453
 TGenCollectionProxy.cxx:1454
 TGenCollectionProxy.cxx:1455
 TGenCollectionProxy.cxx:1456
 TGenCollectionProxy.cxx:1457
 TGenCollectionProxy.cxx:1458
 TGenCollectionProxy.cxx:1459
 TGenCollectionProxy.cxx:1460
 TGenCollectionProxy.cxx:1461
 TGenCollectionProxy.cxx:1462
 TGenCollectionProxy.cxx:1463
 TGenCollectionProxy.cxx:1464
 TGenCollectionProxy.cxx:1465
 TGenCollectionProxy.cxx:1466
 TGenCollectionProxy.cxx:1467
 TGenCollectionProxy.cxx:1468
 TGenCollectionProxy.cxx:1469
 TGenCollectionProxy.cxx:1470
 TGenCollectionProxy.cxx:1471
 TGenCollectionProxy.cxx:1472
 TGenCollectionProxy.cxx:1473
 TGenCollectionProxy.cxx:1474
 TGenCollectionProxy.cxx:1475
 TGenCollectionProxy.cxx:1476
 TGenCollectionProxy.cxx:1477
 TGenCollectionProxy.cxx:1478
 TGenCollectionProxy.cxx:1479
 TGenCollectionProxy.cxx:1480
 TGenCollectionProxy.cxx:1481
 TGenCollectionProxy.cxx:1482
 TGenCollectionProxy.cxx:1483
 TGenCollectionProxy.cxx:1484
 TGenCollectionProxy.cxx:1485
 TGenCollectionProxy.cxx:1486
 TGenCollectionProxy.cxx:1487
 TGenCollectionProxy.cxx:1488
 TGenCollectionProxy.cxx:1489
 TGenCollectionProxy.cxx:1490
 TGenCollectionProxy.cxx:1491
 TGenCollectionProxy.cxx:1492
 TGenCollectionProxy.cxx:1493
 TGenCollectionProxy.cxx:1494
 TGenCollectionProxy.cxx:1495
 TGenCollectionProxy.cxx:1496
 TGenCollectionProxy.cxx:1497
 TGenCollectionProxy.cxx:1498
 TGenCollectionProxy.cxx:1499
 TGenCollectionProxy.cxx:1500
 TGenCollectionProxy.cxx:1501
 TGenCollectionProxy.cxx:1502
 TGenCollectionProxy.cxx:1503
 TGenCollectionProxy.cxx:1504
 TGenCollectionProxy.cxx:1505
 TGenCollectionProxy.cxx:1506
 TGenCollectionProxy.cxx:1507
 TGenCollectionProxy.cxx:1508
 TGenCollectionProxy.cxx:1509
 TGenCollectionProxy.cxx:1510
 TGenCollectionProxy.cxx:1511
 TGenCollectionProxy.cxx:1512
 TGenCollectionProxy.cxx:1513
 TGenCollectionProxy.cxx:1514
 TGenCollectionProxy.cxx:1515
 TGenCollectionProxy.cxx:1516
 TGenCollectionProxy.cxx:1517
 TGenCollectionProxy.cxx:1518
 TGenCollectionProxy.cxx:1519
 TGenCollectionProxy.cxx:1520
 TGenCollectionProxy.cxx:1521
 TGenCollectionProxy.cxx:1522
 TGenCollectionProxy.cxx:1523
 TGenCollectionProxy.cxx:1524
 TGenCollectionProxy.cxx:1525
 TGenCollectionProxy.cxx:1526
 TGenCollectionProxy.cxx:1527
 TGenCollectionProxy.cxx:1528
 TGenCollectionProxy.cxx:1529
 TGenCollectionProxy.cxx:1530
 TGenCollectionProxy.cxx:1531
 TGenCollectionProxy.cxx:1532
 TGenCollectionProxy.cxx:1533
 TGenCollectionProxy.cxx:1534
 TGenCollectionProxy.cxx:1535
 TGenCollectionProxy.cxx:1536
 TGenCollectionProxy.cxx:1537
 TGenCollectionProxy.cxx:1538
 TGenCollectionProxy.cxx:1539
 TGenCollectionProxy.cxx:1540
 TGenCollectionProxy.cxx:1541
 TGenCollectionProxy.cxx:1542
 TGenCollectionProxy.cxx:1543
 TGenCollectionProxy.cxx:1544
 TGenCollectionProxy.cxx:1545
 TGenCollectionProxy.cxx:1546
 TGenCollectionProxy.cxx:1547
 TGenCollectionProxy.cxx:1548
 TGenCollectionProxy.cxx:1549
 TGenCollectionProxy.cxx:1550
 TGenCollectionProxy.cxx:1551
 TGenCollectionProxy.cxx:1552
 TGenCollectionProxy.cxx:1553
 TGenCollectionProxy.cxx:1554
 TGenCollectionProxy.cxx:1555
 TGenCollectionProxy.cxx:1556
 TGenCollectionProxy.cxx:1557
 TGenCollectionProxy.cxx:1558
 TGenCollectionProxy.cxx:1559
 TGenCollectionProxy.cxx:1560
 TGenCollectionProxy.cxx:1561
 TGenCollectionProxy.cxx:1562
 TGenCollectionProxy.cxx:1563
 TGenCollectionProxy.cxx:1564
 TGenCollectionProxy.cxx:1565
 TGenCollectionProxy.cxx:1566
 TGenCollectionProxy.cxx:1567
 TGenCollectionProxy.cxx:1568
 TGenCollectionProxy.cxx:1569
 TGenCollectionProxy.cxx:1570
 TGenCollectionProxy.cxx:1571
 TGenCollectionProxy.cxx:1572
 TGenCollectionProxy.cxx:1573
 TGenCollectionProxy.cxx:1574
 TGenCollectionProxy.cxx:1575
 TGenCollectionProxy.cxx:1576
 TGenCollectionProxy.cxx:1577
 TGenCollectionProxy.cxx:1578
 TGenCollectionProxy.cxx:1579
 TGenCollectionProxy.cxx:1580
 TGenCollectionProxy.cxx:1581
 TGenCollectionProxy.cxx:1582
 TGenCollectionProxy.cxx:1583
 TGenCollectionProxy.cxx:1584
 TGenCollectionProxy.cxx:1585
 TGenCollectionProxy.cxx:1586
 TGenCollectionProxy.cxx:1587
 TGenCollectionProxy.cxx:1588
 TGenCollectionProxy.cxx:1589
 TGenCollectionProxy.cxx:1590
 TGenCollectionProxy.cxx:1591
 TGenCollectionProxy.cxx:1592
 TGenCollectionProxy.cxx:1593
 TGenCollectionProxy.cxx:1594
 TGenCollectionProxy.cxx:1595
 TGenCollectionProxy.cxx:1596
 TGenCollectionProxy.cxx:1597
 TGenCollectionProxy.cxx:1598
 TGenCollectionProxy.cxx:1599
 TGenCollectionProxy.cxx:1600
 TGenCollectionProxy.cxx:1601
 TGenCollectionProxy.cxx:1602
 TGenCollectionProxy.cxx:1603
 TGenCollectionProxy.cxx:1604
 TGenCollectionProxy.cxx:1605
 TGenCollectionProxy.cxx:1606
 TGenCollectionProxy.cxx:1607
 TGenCollectionProxy.cxx:1608
 TGenCollectionProxy.cxx:1609
 TGenCollectionProxy.cxx:1610
 TGenCollectionProxy.cxx:1611
 TGenCollectionProxy.cxx:1612
 TGenCollectionProxy.cxx:1613
 TGenCollectionProxy.cxx:1614
 TGenCollectionProxy.cxx:1615
 TGenCollectionProxy.cxx:1616
 TGenCollectionProxy.cxx:1617
 TGenCollectionProxy.cxx:1618
 TGenCollectionProxy.cxx:1619
 TGenCollectionProxy.cxx:1620
 TGenCollectionProxy.cxx:1621
 TGenCollectionProxy.cxx:1622
 TGenCollectionProxy.cxx:1623
 TGenCollectionProxy.cxx:1624
 TGenCollectionProxy.cxx:1625
 TGenCollectionProxy.cxx:1626
 TGenCollectionProxy.cxx:1627
 TGenCollectionProxy.cxx:1628
 TGenCollectionProxy.cxx:1629
 TGenCollectionProxy.cxx:1630
 TGenCollectionProxy.cxx:1631
 TGenCollectionProxy.cxx:1632
 TGenCollectionProxy.cxx:1633
 TGenCollectionProxy.cxx:1634
 TGenCollectionProxy.cxx:1635
 TGenCollectionProxy.cxx:1636
 TGenCollectionProxy.cxx:1637
 TGenCollectionProxy.cxx:1638
 TGenCollectionProxy.cxx:1639
 TGenCollectionProxy.cxx:1640
 TGenCollectionProxy.cxx:1641
 TGenCollectionProxy.cxx:1642
 TGenCollectionProxy.cxx:1643
 TGenCollectionProxy.cxx:1644
 TGenCollectionProxy.cxx:1645
 TGenCollectionProxy.cxx:1646
 TGenCollectionProxy.cxx:1647
 TGenCollectionProxy.cxx:1648
 TGenCollectionProxy.cxx:1649
 TGenCollectionProxy.cxx:1650
 TGenCollectionProxy.cxx:1651
 TGenCollectionProxy.cxx:1652
 TGenCollectionProxy.cxx:1653
 TGenCollectionProxy.cxx:1654
 TGenCollectionProxy.cxx:1655
 TGenCollectionProxy.cxx:1656
 TGenCollectionProxy.cxx:1657
 TGenCollectionProxy.cxx:1658
 TGenCollectionProxy.cxx:1659
 TGenCollectionProxy.cxx:1660
 TGenCollectionProxy.cxx:1661
 TGenCollectionProxy.cxx:1662
 TGenCollectionProxy.cxx:1663
 TGenCollectionProxy.cxx:1664
 TGenCollectionProxy.cxx:1665
 TGenCollectionProxy.cxx:1666
 TGenCollectionProxy.cxx:1667
 TGenCollectionProxy.cxx:1668
 TGenCollectionProxy.cxx:1669
 TGenCollectionProxy.cxx:1670
 TGenCollectionProxy.cxx:1671
 TGenCollectionProxy.cxx:1672
 TGenCollectionProxy.cxx:1673
 TGenCollectionProxy.cxx:1674
 TGenCollectionProxy.cxx:1675
 TGenCollectionProxy.cxx:1676
 TGenCollectionProxy.cxx:1677
 TGenCollectionProxy.cxx:1678
 TGenCollectionProxy.cxx:1679
 TGenCollectionProxy.cxx:1680
 TGenCollectionProxy.cxx:1681
 TGenCollectionProxy.cxx:1682
 TGenCollectionProxy.cxx:1683
 TGenCollectionProxy.cxx:1684
 TGenCollectionProxy.cxx:1685
 TGenCollectionProxy.cxx:1686
 TGenCollectionProxy.cxx:1687
 TGenCollectionProxy.cxx:1688
 TGenCollectionProxy.cxx:1689
 TGenCollectionProxy.cxx:1690
 TGenCollectionProxy.cxx:1691
 TGenCollectionProxy.cxx:1692
 TGenCollectionProxy.cxx:1693
 TGenCollectionProxy.cxx:1694