// @(#)root/meta:$Id$
// Author: Rene Brun   12/10/2000

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#include "TROOT.h"
#include "TStreamerElement.h"
#include "TVirtualStreamerInfo.h"
#include "TClass.h"
#include "TClassEdit.h"
#include "TClassStreamer.h"
#include "TBaseClass.h"
#include "TDataMember.h"
#include "TDataType.h"
#include "TMethod.h"
#include "TMethodCall.h"
#include "TRealData.h"
#include "TFolder.h"
#include "TRef.h"
#include "TInterpreter.h"
#include "TError.h"
#include "TDataType.h"
#include "TVirtualMutex.h"
#include "TVirtualCollectionProxy.h"
#include <iostream>

#include <string>
namespace std {} using namespace std;

const Int_t kMaxLen = 1024;
static TString gIncludeName(kMaxLen);

extern void *gMmallocDesc;

//______________________________________________________________________________
static TStreamerBasicType *InitCounter(const char *countClass, const char *countName, TObject *directive)
{
   // Helper function to initialize the 'index/counter' value of
   // the Pointer streamerElements.  If directive is a StreamerInfo and it correspond to the 
   // same class a 'countClass' the streamerInfo is used instead of the current StreamerInfo of the TClass
   // for 'countClass'.
   
   TStreamerBasicType *counter = 0;
   
   if (directive && directive->InheritsFrom(TVirtualStreamerInfo::Class()) && strcmp(directive->GetName(),countClass)==0) {
      
      TVirtualStreamerInfo *info = (TVirtualStreamerInfo*)directive;
      TStreamerElement *element = (TStreamerElement *)info->GetElements()->FindObject(countName);
      if (!element) return 0;
      if (element->IsA() != TStreamerBasicType::Class()) return 0;
      counter = (TStreamerBasicType*)element;
      
   } else {
   
      TClass *cl = TClass::GetClass(countClass);
      if (cl==0) return 0;
      counter = TVirtualStreamerInfo::GetElementCounter(countName,cl);
   }
       
   //at this point the counter may be declared to be skipped
   if (counter) {
      if (counter->GetType() < TVirtualStreamerInfo::kCounter) counter->SetType(TVirtualStreamerInfo::kCounter);
   }
   return counter;
}

//______________________________________________________________________________
static void GetRange(const char *comments, Double_t &xmin, Double_t &xmax, Double_t &factor)
{
   // Parse comments to search for a range specifier of the style:
   //  [xmin,xmax] or [xmin,xmax,nbits]
   //  [0,1]
   //  [-10,100];
   //  [-pi,pi], [-pi/2,pi/4],[-2pi,2*pi]
   //  [-10,100,16]
   //  [0,0,8]
   // if nbits is not specified, or nbits <2 or nbits>32 it is set to 32
   // if (xmin==0 and xmax==0 and nbits <=16) the double word will be converted
   // to a float and its mantissa truncated to nbits significative bits.
   //
   //  see comments in TBufferFile::WriteDouble32.

   const Double_t kPi =3.14159265358979323846 ;
   factor = xmin = xmax = 0;
   if (!comments) return;
   const char *left = strstr(comments,"[");
   if (!left) return;
   const char *right = strstr(left,"]");
   if (!right) return;
   const char *comma = strstr(left,",");
   if (!comma || comma > right) {
      //may be first bracket was a dimension specifier
      left = strstr(right,"[");
      if (!left) return;
      right = strstr(left,"]");
      if (!right) return;
      comma = strstr(left,",");
      if (!comma || comma >right) return;
   }
   //search if nbits is specified
   const char *comma2 = 0;
   if (comma) comma2 = strstr(comma+1,",");
   if (comma2 > right) comma2 = 0;
   Int_t nbits = 32;
   if (comma2) {
      TString sbits(comma2+1,right-comma2-1);
      sscanf(sbits.Data(),"%d",&nbits);
      if (nbits < 2 || nbits > 32) {
         ::Error("GetRange","Illegal specification for the number of bits; %d. reset to 32.",nbits);
         nbits = 32;
      }
      right = comma2;
   }
   TString range(left+1,right-left-1);
   TString sxmin(left+1,comma-left-1);
   sxmin.ToLower();
   sxmin.ReplaceAll(" ","");
   if (sxmin.Contains("pi")) {
      if      (sxmin.Contains("2pi"))   xmin = 2*kPi;
      else if (sxmin.Contains("2*pi"))  xmin = 2*kPi;
      else if (sxmin.Contains("twopi")) xmin = 2*kPi;
      else if (sxmin.Contains("pi/2"))  xmin = kPi/2;
      else if (sxmin.Contains("pi/4"))  xmin = kPi/4;
      else if (sxmin.Contains("pi"))    xmin = kPi;
      if (sxmin.Contains("-"))          xmin = -xmin;
   } else {
      sscanf(sxmin.Data(),"%lg",&xmin);
   }
   TString sxmax(comma+1,right-comma-1);
   sxmax.ToLower();
   sxmax.ReplaceAll(" ","");
   if (sxmax.Contains("pi")) {
      if      (sxmax.Contains("2pi"))   xmax = 2*kPi;
      else if (sxmax.Contains("2*pi"))  xmax = 2*kPi;
      else if (sxmax.Contains("twopi")) xmax = 2*kPi;
      else if (sxmax.Contains("pi/2"))  xmax = kPi/2;
      else if (sxmax.Contains("pi/4"))  xmax = kPi/4;
      else if (sxmax.Contains("pi"))    xmax = kPi;
      if (sxmax.Contains("-"))          xmax = -xmax;
   } else {
      sscanf(sxmax.Data(),"%lg",&xmax);
   }
   UInt_t bigint;
   if (nbits < 32)  bigint = 1<<nbits;
   else             bigint = 0xffffffff;
   if (xmin < xmax) factor = bigint/(xmax-xmin);
   if (xmin >= xmax && nbits <15) xmin = nbits+0.1;
}

ClassImp(TStreamerElement)

//______________________________________________________________________________
TStreamerElement::TStreamerElement()
{
   // Default ctor.

   fType        = 0;
   fSize        = 0;
   fNewType     = 0;
   fArrayDim    = 0;
   fArrayLength = 0;
   fStreamer    = 0;
   fOffset      = 0;
   fClassObject = (TClass*)(-1);
   fNewClass    = 0;
   fTObjectOffset = 0;
   fFactor      = 0;
   fXmin        = 0;
   fXmax        = 0;
   for (Int_t i=0;i<5;i++) fMaxIndex[i] = 0;
}

//______________________________________________________________________________
TStreamerElement::TStreamerElement(const char *name, const char *title, Int_t offset, Int_t dtype, const char *typeName)
        : TNamed(name,title)
{
   // Create a TStreamerElement object.

   fOffset      = offset;
   fType        = dtype;
   fSize        = 0;
   fNewType     = fType;
   fArrayDim    = 0;
   fArrayLength = 0;
   fTypeName    = TClassEdit::ResolveTypedef(typeName);
   fStreamer    = 0;
   fClassObject = (TClass*)(-1);
   fNewClass    = 0;
   fTObjectOffset = 0;
   fFactor      = 0;
   fXmin        = 0;
   fXmax        = 0;
   for (Int_t i=0;i<5;i++) fMaxIndex[i] = 0;
   if (fTypeName == "Float16_t" || fTypeName == "Float16_t*") {
      GetRange(title,fXmin,fXmax,fFactor);
      if (fFactor > 0 || fXmin > 0) SetBit(kHasRange);
   }
   if (fTypeName == "Double32_t" || fTypeName == "Double32_t*") {
      GetRange(title,fXmin,fXmax,fFactor);
      if (fFactor > 0 || fXmin > 0) SetBit(kHasRange);
   }
}

//______________________________________________________________________________
TStreamerElement::~TStreamerElement()
{
   // TStreamerElement dtor.
}


//______________________________________________________________________________
Bool_t TStreamerElement::CannotSplit() const
{
   // Returns true if the element cannot be split, false otherwise.
   // An element cannot be split if the corresponding class member has
   // the special characters "||" as the first characters in the
   // comment field.

   if (GetTitle()[0] != 0 && strspn(GetTitle(),"||") == 2) return kTRUE;
   TClass *cl = GetClassPointer();
   if (!cl) return kFALSE;  //basic type

   switch(fType) {
      case TVirtualStreamerInfo::kAny    +TVirtualStreamerInfo::kOffsetL:
      case TVirtualStreamerInfo::kObject +TVirtualStreamerInfo::kOffsetL:
      case TVirtualStreamerInfo::kTObject+TVirtualStreamerInfo::kOffsetL:
      case TVirtualStreamerInfo::kTString+TVirtualStreamerInfo::kOffsetL:
      case TVirtualStreamerInfo::kTNamed +TVirtualStreamerInfo::kOffsetL:
         return kTRUE;
   }

   if ( !cl->CanSplit() ) return kTRUE;

   return kFALSE;
}

//______________________________________________________________________________
TClass *TStreamerElement::GetClassPointer() const
{
   // Returns a pointer to the TClass of this element.

   if (fClassObject!=(TClass*)(-1)) return fClassObject;
   TString className = fTypeName.Strip(TString::kTrailing, '*');
   if (className.Index("const ")==0) className.Remove(0,6);
   bool quiet = (fType == TVirtualStreamerInfo::kArtificial);
   ((TStreamerElement*)this)->fClassObject = TClass::GetClass(className,kTRUE,quiet);
   return fClassObject;
}

//______________________________________________________________________________
Int_t TStreamerElement::GetExecID() const
{
   // Returns the TExec id for the EXEC instruction in the comment field
   // of a TRef data member.

   //check if element is a TRef or TRefArray
   if (strncmp(fTypeName.Data(),"TRef",4) != 0) return 0;

   //if the UniqueID of this element has already been set, we assume
   //that it contains the exec id of a TRef object.
   if (GetUniqueID()) return GetUniqueID();

   //check if an Exec is specified in the comment field
   char *action = (char*)strstr(GetTitle(),"EXEC:");
   if (!action) return 0;
   Int_t nch = strlen(action)+1;
   char *caction = new char[nch];
   strlcpy(caction,action+5,nch);
   char *blank = (char*)strchr(caction,' ');
   if (blank) *blank = 0;
   //we have found the Exec name in the comment
   //we register this Exec to the list of Execs.
   Int_t index = TRef::AddExec(caction);
   delete [] caction;
   //we save the Exec index as the uniqueid of this STreamerElement
   const_cast<TStreamerElement*>(this)->SetUniqueID(index+1);
   return index+1;
}

//______________________________________________________________________________
const char *TStreamerElement::GetFullName() const
{
   // Return element name including dimensions, if any
   // Note that this function stores the name into a static array.
   // You should copy the result.

   static TString name(kMaxLen);
   char cdim[20];
   name = GetName();
   for (Int_t i=0;i<fArrayDim;i++) {
      snprintf(cdim,19,"[%d]",fMaxIndex[i]);
      name += cdim;
   }
   return name;
}

//______________________________________________________________________________
void TStreamerElement::GetSequenceType(TString &sequenceType) const
{
   // Fill type with the string representation of sequence
   // information including 'cached','repeat','write' or
   // 'nodelete'.

   sequenceType.Clear();
   Bool_t first = kTRUE;
   if (TestBit(TStreamerElement::kWholeObject)) {
      if (!first) sequenceType += ",";
      first = kFALSE;
      sequenceType += "wholeObject";
   }
   if (TestBit(TStreamerElement::kCache)) {
      first = kFALSE;
      sequenceType += "cached";
   }
   if (TestBit(TStreamerElement::kRepeat)) {
      if (!first) sequenceType += ",";
      first = kFALSE;
      sequenceType += "repeat";
   }
   if (TestBit(TStreamerElement::kDoNotDelete)) {
      if (!first) sequenceType += ",";
      first = kFALSE;
      sequenceType += "nodelete";
   }
   if (TestBit(TStreamerElement::kWrite)) {
      if (!first) sequenceType += ",";
      first = kFALSE;
      sequenceType += "write";
   }
}

//______________________________________________________________________________
Int_t TStreamerElement::GetSize() const
{
   // Returns size of this element in bytes.

   return fSize;
}

//______________________________________________________________________________
TMemberStreamer *TStreamerElement::GetStreamer() const
{
   // Return the local streamer object.

   return fStreamer;
}

//______________________________________________________________________________
const char *TStreamerElement::GetTypeNameBasic() const
{
   // Return type name of this element
   // in case the type name is not a standard basic type, return
   // the basic type name known to CINT.

   TDataType *dt = gROOT->GetType(fTypeName.Data());
   if (fType < 1 || fType > 55) return fTypeName.Data();
   if (dt && dt->GetType() > 0) return fTypeName.Data();
   Int_t dtype = fType%20;
   return TDataType::GetTypeName((EDataType)dtype);
}

//______________________________________________________________________________
void TStreamerElement::Init(TObject *)
{
   // Initliaze the element.

   fClassObject = GetClassPointer();
   if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
}

//______________________________________________________________________________
Bool_t TStreamerElement::IsOldFormat(const char *newTypeName)
{
   // The early 3.00/00 and 3.01/01 versions used to store
   // dm->GetTypeName instead of dm->GetFullTypename
   // if this case is detected, the element type name is modified.

   //if (!IsaPointer()) return kFALSE;
   if (!strstr(newTypeName,fTypeName.Data())) return kFALSE;
   //if (!strstr(fTypeName.Data(),newTypeName)) return kFALSE;
   fTypeName = newTypeName;
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TStreamerElement::IsBase() const
{
   // Return kTRUE if the element represent a base class.

   return kFALSE;
}

//______________________________________________________________________________
void TStreamerElement::ls(Option_t *) const
{
   // Print the content of the element.

   TString temp(GetTypeName());
   if (IsaPointer() && !fTypeName.Contains("*")) temp += "*";

   TString sequenceType;
   GetSequenceType(sequenceType);
   if (sequenceType.Length()) {
      sequenceType.Prepend(" (");
      sequenceType += ") ";
   }
   printf("  %-14s %-15s offset=%3d type=%2d %s%-20s\n",
          temp.Data(),GetFullName(),fOffset,fType,sequenceType.Data(),
          GetTitle());
}

//______________________________________________________________________________
void TStreamerElement::SetArrayDim(Int_t dim)
{
   // Set number of array dimensions.

   fArrayDim = dim;
   if (dim) fType += TVirtualStreamerInfo::kOffsetL;
   fNewType = fType;
}

//______________________________________________________________________________
void TStreamerElement::SetMaxIndex(Int_t dim, Int_t max)
{
   //set maximum index for array with dimension dim

   if (dim < 0 || dim > 4) return;
   fMaxIndex[dim] = max;
   if (fArrayLength == 0)  fArrayLength  = max;
   else                    fArrayLength *= max;
}

//______________________________________________________________________________
void TStreamerElement::SetStreamer(TMemberStreamer *streamer)
{
   //set pointer to Streamer function for this element

   fStreamer = streamer;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      //NOTE that when reading, one cannot use Class()->ReadBuffer
      // TBuffer::Class methods used for reading streamerinfos from SQL database
      // Any changes of class structure should be reflected by them starting from version 4
      
      R__b.ClassBegin(TStreamerElement::Class(), R__v);
      R__b.ClassMember("TNamed");
      TNamed::Streamer(R__b);
      R__b.ClassMember("fType","Int_t");
      R__b >> fType;
      R__b.ClassMember("fSize","Int_t");
      R__b >> fSize;
      R__b.ClassMember("fArrayLength","Int_t");
      R__b >> fArrayLength;
      R__b.ClassMember("fArrayDim","Int_t");
      R__b >> fArrayDim;
      R__b.ClassMember("fMaxIndex","Int_t", 5);
      if (R__v == 1) R__b.ReadStaticArray(fMaxIndex);
      else           R__b.ReadFastArray(fMaxIndex,5);
      R__b.ClassMember("fTypeName","TString");
      fTypeName.Streamer(R__b);
      if (fType==11&&(fTypeName=="Bool_t"||fTypeName=="bool")) fType = 18;
      if (R__v > 1) {
         SetUniqueID(0);
         //check if element is a TRef or TRefArray
         GetExecID();
      }
      if (R__v <= 2 && this->IsA()==TStreamerBasicType::Class()) {
         // In TStreamerElement v2, fSize was holding the size of
         // the underlying data type.  In later version it contains 
         // the full length of the data member.
         TDataType *type = gROOT->GetType(GetTypeName());
         if (type && fArrayLength) fSize = fArrayLength * type->Size();
      }
      if (R__v == 3) {
         R__b >> fXmin;
         R__b >> fXmax;
         R__b >> fFactor;
         if (fFactor > 0) SetBit(kHasRange);
      }
      if (R__v > 3) {
         if (TestBit(kHasRange)) GetRange(GetTitle(),fXmin,fXmax,fFactor);
      }
      //R__b.CheckByteCount(R__s, R__c, TStreamerElement::IsA());
      R__b.ClassEnd(TStreamerElement::Class());
      R__b.SetBufferOffset(R__s+R__c+sizeof(UInt_t));
      
      ResetBit(TStreamerElement::kCache);
      ResetBit(TStreamerElement::kWrite);
   } else {
      R__b.WriteClassBuffer(TStreamerElement::Class(),this);
   }
}

//______________________________________________________________________________
void TStreamerElement::Update(const TClass *oldClass, TClass *newClass)
{
   //function called by the TClass constructor when replacing an emulated class
   //by the real class

   if (fClassObject == oldClass) {
      fClassObject = newClass;
      if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
         fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
      }
   } else if (fClassObject==0) {
      // Well since some emulated class is replaced by a real class, we can
      // assume a new library has been loaded.  If this is the case, we should
      // check whether the class now exist (this would be the case for example
      // for reading STL containers).
      fClassObject = (TClass*)-1;
      GetClassPointer(); //force fClassObject
      if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
         fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
      }
   }
}

//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerBase implement the streamer of the base class               //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerBase)

//______________________________________________________________________________
TStreamerBase::TStreamerBase() :
   // Abuse TStreamerElement data member that is not used by TStreamerBase
   fBaseCheckSum( *( (UInt_t*)&(fMaxIndex[1]) ) ),
   fStreamerFunc(0), fStreamerInfo(0)
{
   // Default ctor.

   fBaseClass = (TClass*)(-1);
   fBaseVersion = 0;
   fNewBaseClass = 0;
}

//______________________________________________________________________________
TStreamerBase::TStreamerBase(const char *name, const char *title, Int_t offset)
   : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kBase,"BASE"),
     // Abuse TStreamerElement data member that is not used by TStreamerBase
     fBaseCheckSum( *( (UInt_t*)&(fMaxIndex[1]) ) ),
     fStreamerFunc(0), fStreamerInfo(0)

{
   // Create a TStreamerBase object.

   if (strcmp(name,"TObject") == 0) fType = TVirtualStreamerInfo::kTObject;
   if (strcmp(name,"TNamed")  == 0) fType = TVirtualStreamerInfo::kTNamed;
   fNewType = fType;
   fBaseClass = TClass::GetClass(GetName());
   if (fBaseClass) {
      if (fBaseClass->IsVersioned()) {
         fBaseVersion = fBaseClass->GetClassVersion();
      } else {
         fBaseVersion = -1;
      }
      fBaseCheckSum = fBaseClass->GetCheckSum();
   } else fBaseVersion = 0;
   fNewBaseClass = 0;
   Init();
}

//______________________________________________________________________________
TStreamerBase::~TStreamerBase()
{
   // TStreamerBase dtor
}

//______________________________________________________________________________
TClass *TStreamerBase::GetClassPointer() const
{
   // Returns a pointer to the TClass of this element.
   if (fBaseClass!=(TClass*)(-1)) return fBaseClass;
   ((TStreamerBase*)this)->fBaseClass = TClass::GetClass(GetName());
   return fBaseClass;
}

//______________________________________________________________________________
Int_t TStreamerBase::GetSize() const
{
   // Returns size of baseclass in bytes.

   TClass *cl = GetClassPointer();
   if (cl) return cl->Size();
   return 0;
}

//______________________________________________________________________________
void TStreamerBase::Init(TObject *)
{
   // Setup the element.

   fBaseClass = TClass::GetClass(GetName());
   if (!fBaseClass) return;

   InitStreaming();
}

//______________________________________________________________________________
void TStreamerBase::InitStreaming()
{
   // Setup the fStreamerFunc and fStreamerinfo

   if (fNewBaseClass) {
      fStreamerFunc = fNewBaseClass->GetStreamerFunc();
      if (fBaseVersion > 0 || fBaseClass == 0) {
         fStreamerInfo = fNewBaseClass->GetConversionStreamerInfo(fBaseClass,fBaseVersion);
      } else {
         fStreamerInfo = fNewBaseClass->FindConversionStreamerInfo(fBaseClass,fBaseCheckSum);
      }
   } else if (fBaseClass && fBaseClass != (TClass*)-1) {
      fStreamerFunc = fBaseClass->GetStreamerFunc();
      if (fBaseVersion >= 0 || fBaseClass == 0) {
         fStreamerInfo = fBaseClass->GetStreamerInfo(fBaseVersion);
      } else {
         fStreamerInfo = fBaseClass->FindStreamerInfo(fBaseCheckSum);
      }
   } else {
      fStreamerFunc = 0;
      fStreamerInfo = 0;
   }
}

//______________________________________________________________________________
Bool_t TStreamerBase::IsBase() const
{
   // Return kTRUE if the element represent a base class.

   return kTRUE;
}

//______________________________________________________________________________
const char *TStreamerBase::GetInclude() const
{
   // Return the proper include for this element.

   if (GetClassPointer() && fBaseClass->HasInterpreterInfo()) {
      gIncludeName.Form("\"%s\"",fBaseClass->GetDeclFileName());
   } else {
      std::string shortname( TClassEdit::ShortType( GetName(), 1 ) );
      gIncludeName.Form("\"%s.h\"",shortname.c_str());
   }
   return gIncludeName;
}

//______________________________________________________________________________
void TStreamerBase::ls(Option_t *) const
{
   // Print the content of the element.

   TString sequenceType;
   GetSequenceType(sequenceType);
   if (sequenceType.Length()) {
      sequenceType.Prepend(" (");
      sequenceType += ") ";
   }
   printf("  %-14s %-15s offset=%3d type=%2d %s%-20s\n",GetFullName(),GetTypeName(),fOffset,fType,sequenceType.Data(),GetTitle());
}

//______________________________________________________________________________
Int_t TStreamerBase::ReadBuffer (TBuffer &b, char *pointer)
{
   // Read the content of the buffer.

   if (fStreamerFunc) {
      // We have a custom Streamer member function, we must use it.
      fStreamerFunc(b,pointer+fOffset);
   } else {
      // We don't have a custom Streamer member function. That still doesn't mean
      // that there is no streamer - it could be an external one:
      // If the old base class has an adopted streamer we take that
      // one instead of the new base class:
      if( fNewBaseClass ) {
         TClassStreamer* extstrm = fNewBaseClass->GetStreamer();                  
         if (extstrm) {
            // The new base class has an adopted streamer:
            extstrm->SetOnFileClass(fBaseClass);
            (*extstrm)(b, pointer);
         } else {
            b.ReadClassBuffer( fNewBaseClass, pointer+fOffset, fBaseClass ); 
         }
      } else {
         TClassStreamer* extstrm = fBaseClass->GetStreamer();         
         if (extstrm) {
            // The class has an adopted streamer:
            (*extstrm)(b, pointer);
         } else {
            b.ReadClassBuffer( fBaseClass, pointer+fOffset );
         }
      }
   }
   return 0;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      
      R__b.ClassBegin(TStreamerBase::Class(), R__v);
      
      R__b.ClassMember("TStreamerElement");
      TStreamerElement::Streamer(R__b);
      // If the class owning the TStreamerElement and the base class are not
      // loaded, on the file their streamer info might be in the following 
      // order (derived class,base class) and hence the base class is not
      // yet emulated.
      fBaseClass = (TClass*)-1;
      fNewBaseClass = 0;
      // Eventually we need a v3 that stores directly fBaseCheckSum (and
      // a version of TStreamerElement should not stored fMaxIndex)
      if (R__v > 2) {
         R__b.ClassMember("fBaseVersion","Int_t");
         R__b >> fBaseVersion;
      } else {
         // could have been: fBaseVersion = GetClassPointer()->GetClassVersion();
         fBaseClass = TClass::GetClass(GetName());         
         fBaseVersion = fBaseClass->GetClassVersion();
      }
      R__b.ClassEnd(TStreamerBase::Class());
      R__b.SetBufferOffset(R__s+R__c+sizeof(UInt_t));
   } else {
      R__b.WriteClassBuffer(TStreamerBase::Class(),this);
   }
}

//______________________________________________________________________________
void TStreamerBase::Update(const TClass *oldClass, TClass *newClass)
{
   //Function called by the TClass constructor when replacing an emulated class
   //by the real class.

   if (fClassObject == oldClass) fClassObject = newClass;
   else if (fClassObject == 0) {
      fClassObject = (TClass*)-1;
      GetClassPointer(); //force fClassObject
   }
   if (fBaseClass   == oldClass) fBaseClass   = newClass;
   else if (fBaseClass == 0 ) {
      fBaseClass = (TClass*)-1;
      GetClassPointer(); //force fClassObject
   }
   if (fClassObject != (TClass*)-1 &&
       fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
   InitStreaming();
}

//______________________________________________________________________________
Int_t TStreamerBase::WriteBuffer (TBuffer &b, char *pointer)
{
   // Write the base class into the buffer.

   if (fStreamerFunc) {
      // We have a custom Streamer member function, we must use it.
      fStreamerFunc(b,pointer+fOffset);      
   } else {
      // We don't have a custom Streamer member function. That still doesn't mean
      // that there is no streamer - it could be an external one:
      // If the old base class has an adopted streamer we take that
      // one instead of the new base class:
      if (fNewBaseClass) {
         TClassStreamer* extstrm = fNewBaseClass->GetStreamer();
         if (extstrm) {
            // The new base class has an adopted streamer:
            extstrm->SetOnFileClass(fBaseClass);
            (*extstrm)(b, pointer);
            return 0;
         } else {
            fNewBaseClass->WriteBuffer(b,pointer+fOffset);
            return 0;
         }
      } else {
         TClassStreamer* extstrm = fBaseClass->GetStreamer();
         if (extstrm) {
            (*extstrm)(b, pointer);
            return 0;
         } else {
            fBaseClass->WriteBuffer(b,pointer+fOffset);
            return 0;
         }
      }
   }
   return 0;
}

//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerBasicPointer implements the streamering of pointer to       //
// fundamental types.                                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerBasicPointer)

//______________________________________________________________________________
TStreamerBasicPointer::TStreamerBasicPointer() : fCountVersion(0),fCountName(),fCountClass(),fCounter(0)
{
   // Default ctor.
   fCounter = 0;
}

//______________________________________________________________________________
TStreamerBasicPointer::TStreamerBasicPointer(const char *name, const char *title, Int_t offset, Int_t dtype, const char *countName, const char *countClass, Int_t countVersion, const char *typeName)
   : TStreamerElement(name,title,offset,dtype,typeName)
{
   // Create a TStreamerBasicPointer object.

   fType += TVirtualStreamerInfo::kOffsetP;
   fCountName    = countName;
   fCountClass   = countClass;
   fCountVersion = countVersion;  //currently unused
   Init();
//   printf("BasicPointer Init:%s, countName=%s, countClass=%s, countVersion=%d, fCounter=%x\n",
//      name,countName,countClass,countVersion,fCounter);
}

//______________________________________________________________________________
TStreamerBasicPointer::~TStreamerBasicPointer()
{
   // TStreamerBasicPointer dtor.
}

//______________________________________________________________________________
ULong_t TStreamerBasicPointer::GetMethod() const
{
   // return offset of counter

   if (!fCounter) ((TStreamerBasicPointer*)this)->Init();
   if (!fCounter) return 0;
   return (ULong_t)fCounter->GetOffset();
}

//______________________________________________________________________________
Int_t TStreamerBasicPointer::GetSize() const
{
   // Returns size of basicpointer in bytes.

   if (fArrayLength) return fArrayLength*sizeof(void *);
   return sizeof(void *);
}

//______________________________________________________________________________
void TStreamerBasicPointer::Init(TObject *directive)
{
   // Setup the element.
   // If directive is a StreamerInfo and it correspond to the 
   // same class a 'countClass' the streamerInfo is used instead of the current StreamerInfo of the TClass
   // for 'countClass'.
   
   fCounter = InitCounter( fCountClass, fCountName, directive );
}

//______________________________________________________________________________
void TStreamerBasicPointer::SetArrayDim(Int_t dim)
{
   // Set number of array dimensions.

   fArrayDim = dim;
   //if (dim) fType += TVirtualStreamerInfo::kOffsetL;
   fNewType = fType;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerBasicPointer::Class(), this, R__v, R__s, R__c);
         //Init();
         //fCounter = InitCounter( fCountClass, fCountName );
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b >> fCountVersion;
      fCountName.Streamer(R__b);
      fCountClass.Streamer(R__b);
      R__b.SetBufferOffset(R__s+R__c+sizeof(UInt_t));
   } else {
      R__b.WriteClassBuffer(TStreamerBasicPointer::Class(),this);
   }
}


//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerLoop implement streaming of a few construct that require    //
// looping over the data member and are not convered by other case      //
// (most deprecated).                                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerLoop)

//______________________________________________________________________________
TStreamerLoop::TStreamerLoop() : fCountVersion(0),fCountName(),fCountClass(),fCounter(0)
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerLoop::TStreamerLoop(const char *name, const char *title, Int_t offset, const char *countName, const char *countClass, Int_t countVersion, const char *typeName)
        : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kStreamLoop,typeName)
{
   // Create a TStreamerLoop object.

   fCountName    = countName;
   fCountClass   = countClass;
   fCountVersion = countVersion;  //currently unused
   Init();
}

//______________________________________________________________________________
TStreamerLoop::~TStreamerLoop()
{
   // TStreamerLoop dtor.
}

//______________________________________________________________________________
ULong_t TStreamerLoop::GetMethod() const
{
   // return address of counter

   //if (!fCounter) {
   //   Init();
   //   if (!fCounter) return 0;
   //}
   if (!fCounter) return 0;
   return (ULong_t)fCounter->GetOffset();
}

//______________________________________________________________________________
Int_t TStreamerLoop::GetSize() const
{
   // Returns size of counter in bytes.

   if (fArrayLength) return fArrayLength*sizeof(void*);
   return sizeof(void*);
}

//______________________________________________________________________________
void TStreamerLoop::Init(TObject *directive)
{
   // Setup the element.
   // If directive is a StreamerInfo and it correspond to the 
   // same class a 'countClass' the streamerInfo is used instead of the current StreamerInfo of the TClass
   // for 'countClass'.

   fCounter = InitCounter( fCountClass, fCountName, directive );
}

//______________________________________________________________________________
const char *TStreamerLoop::GetInclude() const
{
   // Return the proper include for this element.

   gIncludeName.Form("<%s>","TString.h"); //to be generalized
   return gIncludeName;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerLoop::Class(), this, R__v, R__s, R__c);
         //Init();
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b >> fCountVersion;
      fCountName.Streamer(R__b);
      fCountClass.Streamer(R__b);
      R__b.SetBufferOffset(R__s+R__c+sizeof(UInt_t));
   } else {
      R__b.WriteClassBuffer(TStreamerLoop::Class(),this);
   }
}


//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerBasicType implement streaming of fundamental types (int,    //
// float, etc.).                                                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerBasicType)

//______________________________________________________________________________
TStreamerBasicType::TStreamerBasicType() : fCounter(0)
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerBasicType::TStreamerBasicType(const char *name, const char *title, Int_t offset, Int_t dtype, const char *typeName)
        : TStreamerElement(name,title,offset,dtype,typeName),fCounter(0)
{
   // Create a TStreamerBasicType object.

}

//______________________________________________________________________________
TStreamerBasicType::~TStreamerBasicType()
{
   // TStreamerBasicType dtor.
}

//______________________________________________________________________________
ULong_t TStreamerBasicType::GetMethod() const
{
   // return address of counter

   if (fType ==  TVirtualStreamerInfo::kCounter ||
       fType == (TVirtualStreamerInfo::kCounter+TVirtualStreamerInfo::kSkip)) return (ULong_t)&fCounter;
   return 0;
}

//______________________________________________________________________________
Int_t TStreamerBasicType::GetSize() const
{
   // Returns size of this element in bytes.

   return fSize;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerBasicType::Class(), this, R__v, R__s, R__c);
      } else {
         //====process old versions before automatic schema evolution
         TStreamerElement::Streamer(R__b);
         R__b.CheckByteCount(R__s, R__c, TStreamerBasicType::IsA());
      }
      Int_t type = fType;
      if (TVirtualStreamerInfo::kOffsetL < type && type < TVirtualStreamerInfo::kOffsetP) {
         type -= TVirtualStreamerInfo::kOffsetL;
      }
      switch(type) {
         // basic types
         case TVirtualStreamerInfo::kBool:     fSize = sizeof(Bool_t);    break;
         case TVirtualStreamerInfo::kShort:    fSize = sizeof(Short_t);   break;
         case TVirtualStreamerInfo::kInt:      fSize = sizeof(Int_t);     break;
         case TVirtualStreamerInfo::kLong:     fSize = sizeof(Long_t);    break; 
         case TVirtualStreamerInfo::kLong64:   fSize = sizeof(Long64_t);  break;
         case TVirtualStreamerInfo::kFloat:    fSize = sizeof(Float_t);   break;
         case TVirtualStreamerInfo::kFloat16:  fSize = sizeof(Float_t);   break;
         case TVirtualStreamerInfo::kDouble:   fSize = sizeof(Double_t);  break;
         case TVirtualStreamerInfo::kDouble32: fSize = sizeof(Double_t);  break;
         case TVirtualStreamerInfo::kUChar:    fSize = sizeof(UChar_t);   break;
         case TVirtualStreamerInfo::kUShort:   fSize = sizeof(UShort_t);  break;
         case TVirtualStreamerInfo::kUInt:     fSize = sizeof(UInt_t);    break;
         case TVirtualStreamerInfo::kULong:    fSize = sizeof(ULong_t);   break;
         case TVirtualStreamerInfo::kULong64:  fSize = sizeof(ULong64_t); break;
         case TVirtualStreamerInfo::kBits:     fSize = sizeof(UInt_t);    break;
         case TVirtualStreamerInfo::kCounter:  fSize = sizeof(Int_t);     break;
         case TVirtualStreamerInfo::kChar:     fSize = sizeof(Char_t);    break;
         case TVirtualStreamerInfo::kCharStar: fSize = sizeof(Char_t*);   break;
         default:          return; // If we don't change the size let's not remultiply it.
      }
      if (fArrayLength) fSize *= GetArrayLength();
   } else {
      R__b.WriteClassBuffer(TStreamerBasicType::Class(),this);
   }
}



//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerObject implements streaming of embedded objects whose type  //
// inherits from TObject.                                               //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerObject)

//______________________________________________________________________________
TStreamerObject::TStreamerObject()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerObject::TStreamerObject(const char *name, const char *title, Int_t offset, const char *typeName)
        : TStreamerElement(name,title,offset,0,typeName)
{
   // Create a TStreamerObject object.

   fType = TVirtualStreamerInfo::kObject;
   if (strcmp(typeName,"TObject") == 0) fType = TVirtualStreamerInfo::kTObject;
   if (strcmp(typeName,"TNamed")  == 0) fType = TVirtualStreamerInfo::kTNamed;
   fNewType = fType;
   Init();
}

//______________________________________________________________________________
TStreamerObject::~TStreamerObject()
{
   // TStreamerObject dtor.
}

//______________________________________________________________________________
void TStreamerObject::Init(TObject *)
{
   // Setup the element.

   fClassObject = GetClassPointer();
   if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
}

//______________________________________________________________________________
const char *TStreamerObject::GetInclude() const
{
   // Return the proper include for this element.

   TClass *cl = GetClassPointer();
   if (cl && cl->HasInterpreterInfo()) {
      gIncludeName.Form("\"%s\"",cl->GetDeclFileName());
   } else {
      std::string shortname( TClassEdit::ShortType( GetTypeName(), 1 ) );
      gIncludeName.Form("\"%s.h\"",shortname.c_str());
   }
   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerObject::GetSize() const
{
   // Returns size of object class in bytes.

   TClass *cl = GetClassPointer();
   Int_t classSize = 8;
   if (cl) classSize = cl->Size();
   if (fArrayLength) return fArrayLength*classSize;
   return classSize;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerObject::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, TStreamerObject::IsA());
   } else {
      R__b.WriteClassBuffer(TStreamerObject::Class(),this);
   }
}


//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerObjectAny implement streaming of embedded object not        //
// inheriting from TObject.                                             //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerObjectAny)

//______________________________________________________________________________
TStreamerObjectAny::TStreamerObjectAny()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerObjectAny::TStreamerObjectAny(const char *name, const char *title, Int_t offset, const char *typeName)
        : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kAny,typeName)
{
   // Create a TStreamerObjectAny object.
   Init();
}

//______________________________________________________________________________
TStreamerObjectAny::~TStreamerObjectAny()
{
   // TStreamerObjectAny dtor.
}

//______________________________________________________________________________
void TStreamerObjectAny::Init(TObject *)
{
   // Setup the element.

   fClassObject = GetClassPointer();
   if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
}

//______________________________________________________________________________
const char *TStreamerObjectAny::GetInclude() const
{
   // Return the proper include for this element.

   TClass *cl = GetClassPointer();
   if (cl && cl->HasInterpreterInfo()) {
      gIncludeName.Form("\"%s\"",cl->GetDeclFileName());
   } else {
      std::string shortname( TClassEdit::ShortType( GetTypeName(), 1 ) );
      gIncludeName.Form("\"%s.h\"",shortname.c_str());
   }
   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerObjectAny::GetSize() const
{
   // Returns size of anyclass in bytes.

   TClass *cl = GetClassPointer();
   Int_t classSize = 8;
   if (cl) classSize = cl->Size();
   if (fArrayLength) return fArrayLength*classSize;
   return classSize;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerObjectAny::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, TStreamerObjectAny::IsA());
   } else {
      R__b.WriteClassBuffer(TStreamerObjectAny::Class(),this);
   }
}



//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerObjectPointer implements streaming of pointer to object     //
// inheriting from TObject.                                             //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerObjectPointer)

//______________________________________________________________________________
TStreamerObjectPointer::TStreamerObjectPointer()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerObjectPointer::TStreamerObjectPointer(const char *name, const char *title,
                                               Int_t offset, const char *typeName)
   : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kObjectP,typeName)
{
   // Create a TStreamerObjectPointer object.

   if (strncmp(title,"->",2) == 0) fType = TVirtualStreamerInfo::kObjectp;
   fNewType = fType;
   Init();
}

//______________________________________________________________________________
TStreamerObjectPointer::~TStreamerObjectPointer()
{
   // TStreamerObjectPointer dtor.
}

//______________________________________________________________________________
void TStreamerObjectPointer::Init(TObject *)
{
   // Setup the element.

   fClassObject = GetClassPointer();
   if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
}

//______________________________________________________________________________
const char *TStreamerObjectPointer::GetInclude() const
{
   // Return the proper include for this element.

   TClass *cl = GetClassPointer();
   if (cl && cl->HasInterpreterInfo()) {
      gIncludeName.Form("\"%s\"",cl->GetDeclFileName());
   } else {
      std::string shortname( TClassEdit::ShortType( GetTypeName(), 1 ) );
      gIncludeName.Form("\"%s.h\"",shortname.c_str());
   }

   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerObjectPointer::GetSize() const
{
   // Returns size of objectpointer in bytes.

   if (fArrayLength) return fArrayLength*sizeof(void *);
   return sizeof(void *);
}

//______________________________________________________________________________
void TStreamerObjectPointer::SetArrayDim(Int_t dim)
{
   // Set number of array dimensions.

   fArrayDim = dim;
   //if (dim) fType += TVirtualStreamerInfo::kOffsetL;
   fNewType = fType;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerObjectPointer::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, TStreamerObjectPointer::IsA());
   } else {
      R__b.WriteClassBuffer(TStreamerObjectPointer::Class(),this);
   }
}


//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerObjectPointerAny implements streaming of pointer to object  //
// not inheriting from TObject.                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerObjectAnyPointer)

//______________________________________________________________________________
TStreamerObjectAnyPointer::TStreamerObjectAnyPointer()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerObjectAnyPointer::TStreamerObjectAnyPointer(const char *name, const char *title,
                                                     Int_t offset, const char *typeName)
   : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kAnyP,typeName)
{
   // Create a TStreamerObjectAnyPointer object.

   if (strncmp(title,"->",2) == 0) fType = TVirtualStreamerInfo::kAnyp;
   fNewType = fType;
   Init();
}

//______________________________________________________________________________
TStreamerObjectAnyPointer::~TStreamerObjectAnyPointer()
{
   // TStreamerObjectAnyPointer dtor.
}

//______________________________________________________________________________
void TStreamerObjectAnyPointer::Init(TObject *)
{
   // Setup the element.

   fClassObject = GetClassPointer();
   if (fClassObject && fClassObject->InheritsFrom(TObject::Class())) {
      fTObjectOffset = fClassObject->GetBaseClassOffset(TObject::Class());
   }
}

//______________________________________________________________________________
const char *TStreamerObjectAnyPointer::GetInclude() const
{
   // Return the proper include for this element.

   TClass *cl = GetClassPointer();
   if (cl && cl->HasInterpreterInfo()) {
      gIncludeName.Form("\"%s\"",cl->GetDeclFileName());
   } else {
      std::string shortname( TClassEdit::ShortType( GetTypeName(), 1 ) );
      gIncludeName.Form("\"%s.h\"",shortname.c_str());
   }

   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerObjectAnyPointer::GetSize() const
{
   // Returns size of objectpointer in bytes.

   if (fArrayLength) return fArrayLength*sizeof(void *);
   return sizeof(void *);
}

//______________________________________________________________________________
void TStreamerObjectAnyPointer::SetArrayDim(Int_t dim)
{
   // Set number of array dimensions.

   fArrayDim = dim;
   //if (dim) fType += TVirtualStreamerInfo::kOffsetL;
   fNewType = fType;
}

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

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


//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TSreamerString implements streaming of TString.                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerString)

//______________________________________________________________________________
TStreamerString::TStreamerString()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerString::TStreamerString(const char *name, const char *title, Int_t offset)
        : TStreamerElement(name,title,offset,TVirtualStreamerInfo::kTString,"TString")
{
   // Create a TStreamerString object.

}

//______________________________________________________________________________
TStreamerString::~TStreamerString()
{
   // TStreamerString dtor.
}

//______________________________________________________________________________
const char *TStreamerString::GetInclude() const
{
   // Return the proper include for this element.
   
   gIncludeName.Form("<%s>","TString.h");
   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerString::GetSize() const
{
   // Returns size of anyclass in bytes.

   if (fArrayLength) return fArrayLength*sizeof(TString);
   return sizeof(TString);
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerString::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerElement::Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, TStreamerString::IsA());
   } else {
      R__b.WriteClassBuffer(TStreamerString::Class(),this);
   }
}

//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerSTL implements streamer of STL container.                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerSTL)

//______________________________________________________________________________
TStreamerSTL::TStreamerSTL() : fSTLtype(0),fCtype(0)
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerSTL::TStreamerSTL(const char *name, const char *title, Int_t offset,
                           const char *typeName, const TVirtualCollectionProxy &proxy, Bool_t dmPointer)
        : TStreamerElement(name,title,offset,ROOT::kSTLany,typeName)
{
   // Create a TStreamerSTL object.

   fTypeName = TClassEdit::ShortType(fTypeName,TClassEdit::kDropStlDefault).c_str();

  if (name==typeName /* intentional pointer comparison */
      || strcmp(name,typeName)==0) {
      // We have a base class.
      fName = fTypeName;
   }
   fSTLtype = proxy.GetCollectionType();
   fCtype   = 0;

   if (dmPointer) fSTLtype += TVirtualStreamerInfo::kOffsetP;

   if (fSTLtype == ROOT::kSTLbitset) {
      // Nothing to check
   } else if (proxy.GetValueClass()) {
      if (proxy.HasPointers()) fCtype = TVirtualStreamerInfo::kObjectp;
      else                     fCtype = TVirtualStreamerInfo::kObject;
   } else {
      fCtype = proxy.GetType();
      if (proxy.HasPointers()) fCtype += TVirtualStreamerInfo::kOffsetP;
   }
   if (TStreamerSTL::IsaPointer()) fType = TVirtualStreamerInfo::kSTLp;  
}

//______________________________________________________________________________
TStreamerSTL::TStreamerSTL(const char *name, const char *title, Int_t offset,
                           const char *typeName, const char *trueType, Bool_t dmPointer)
        : TStreamerElement(name,title,offset,ROOT::kSTLany,typeName)
{
   // Create a TStreamerSTL object.

   const char *t = trueType;
   if (!t || !*t) t = typeName;

   fTypeName = TClassEdit::ShortType(fTypeName,TClassEdit::kDropStlDefault).c_str();

   if (name==typeName /* intentional pointer comparison */
       || strcmp(name,typeName)==0) {
      // We have a base class.
      fName = fTypeName;
   }

   Int_t nch = strlen(t);
   char *s = new char[nch+1];
   strlcpy(s,t,nch+1);
   char *sopen  = strchr(s,'<'); 
   if (sopen == 0) {
      Fatal("TStreamerSTL","For %s, the type name (%s) is seemingly not a template (template argument not found)", name, s);
      return;
   }
   *sopen  = 0; sopen++;
   // We are looking for the first arguments of the STL container, because
   // this arguments can be a templates we need to count the < and >
   char* current=sopen;
   for(int count = 0; *current!='\0'; current++) {
      if (*current=='<') count++;
      if (*current=='>') {
         if (count==0) break;
         count--;
      }
      if (*current==',' && count==0) break;
   }
   char *sclose = current; *sclose = 0; sclose--;
   char *sconst = strstr(sopen,"const ");
   char *sbracket = strstr(sopen,"<");
   if (sconst && (sbracket==0 || sconst < sbracket)) {
      // the string "const" may be part of the classname!
      char *pconst = sconst-1;
      if (*pconst == ' ' || *pconst == '<' || *pconst == '*' || *pconst == '\0') sopen = sconst + 5;
   }
   fSTLtype = 0;
   fCtype   = 0;
   // Any class name that 'contains' the word will be counted
   // as a STL container. Is that really what we want.
   if      (strstr(s,"vector"))   fSTLtype = ROOT::kSTLvector;
   else if (strstr(s,"list"))     fSTLtype = ROOT::kSTLlist;
   else if (strstr(s,"deque"))    fSTLtype = ROOT::kSTLdeque;
   else if (strstr(s,"multimap")) fSTLtype = ROOT::kSTLmultimap;
   else if (strstr(s,"multiset")) fSTLtype = ROOT::kSTLmultiset;
   else if (strstr(s,"bitset"))   fSTLtype = ROOT::kSTLbitset;
   else if (strstr(s,"map"))      fSTLtype = ROOT::kSTLmap;
   else if (strstr(s,"set"))      fSTLtype = ROOT::kSTLset;
   if (fSTLtype == 0) { delete [] s; return;}
   if (dmPointer) fSTLtype += TVirtualStreamerInfo::kOffsetP;

   // find STL contained type
   while (*sopen==' ') sopen++;
   Bool_t isPointer = kFALSE;
   // Find stars outside of any template definitions in the
   // first template argument.
   char *star = strrchr(sopen,'>');
   if (star) star = strchr(star,'*');
   else star = strchr(sopen,'*');
   if (star) {
      isPointer = kTRUE;
      *star = 0;
      sclose = star - 1;
   }
   while (*sclose == ' ') {*sclose = 0; sclose--;}


   TDataType *dt = (TDataType*)gROOT->GetListOfTypes()->FindObject(sopen);
   if (fSTLtype == ROOT::kSTLbitset) {
      // Nothing to check
   } else if (dt) {
      fCtype = dt->GetType();
      if (isPointer) fCtype += TVirtualStreamerInfo::kOffsetP;
   } else {
     // this could also be a nested enums ... which should work ... be let's see.
      TClass *cl = TClass::GetClass(sopen);
      if (cl) {
         if (isPointer) fCtype = TVirtualStreamerInfo::kObjectp;
         else           fCtype = TVirtualStreamerInfo::kObject;
      } else {
         if (gCling->ClassInfo_IsEnum(sopen)) {
            if (isPointer) fCtype += TVirtualStreamerInfo::kOffsetP;
         } else {
            if(strcmp(sopen,"string")) {
               // This case can happens when 'this' is a TStreamerElement for
               // a STL container containing something for which we do not have
               // a TVirtualStreamerInfo (This happens in particular is the collection 
               // objects themselves are always empty) and we do not have the
               // dictionary/shared library for the container.
               if (GetClassPointer() && GetClassPointer()->IsLoaded()) {
                  Warning("TStreamerSTL","For %s we could not find any information about the type %s %d %s",fTypeName.Data(),sopen,fSTLtype,s);
               }
            }
         }
      }
   }
   delete [] s;

   if (TStreamerSTL::IsaPointer()) fType = TVirtualStreamerInfo::kSTLp;
}

//______________________________________________________________________________
TStreamerSTL::~TStreamerSTL()
{
   // TStreamerSTL dtor.
}

//______________________________________________________________________________
Bool_t TStreamerSTL::CannotSplit() const
{
   // We can not split STL's which are inside a variable size array.
   // At least for now.

   if (IsaPointer()) {
      if (GetTitle()[0]=='[') return kTRUE;  // can not split variable size array
      return kTRUE;
   }

   if (GetArrayDim()>=1 && GetArrayLength()>1) return kTRUE;

   if (TStreamerElement::CannotSplit()) return kTRUE;

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TStreamerSTL::IsaPointer() const
{
   // Return true if the data member is a pointer.

   const char *type_name = GetTypeName();
   if ( type_name[strlen(type_name)-1]=='*' ) return kTRUE;
   else return kFALSE;
}


//______________________________________________________________________________
Bool_t TStreamerSTL::IsBase() const
{
   // Return kTRUE if the element represent a base class.

   TString ts(GetName());

   if (strcmp(ts.Data(),GetTypeName())==0) return kTRUE;
   if (strcmp(ts.Data(),GetTypeNameBasic())==0) return kTRUE;
   return kFALSE;
}
//______________________________________________________________________________
Int_t TStreamerSTL::GetSize() const
{
   // Returns size of STL container in bytes.

   // Since the STL collection might or might not be emulated and that the
   // sizeof the object depends on this, let's just always retrieve the
   // current size!
   TClass *cl = GetClassPointer();
   UInt_t size = 0;
   if (cl==0) {
      if (!TestBit(kWarned)) {
         Error("GetSize","Could not find the TClass for %s.\n"
               "This is likely to have been a typedef, if possible please declare it in CINT to work around the issue\n",fTypeName.Data());
         const_cast<TStreamerSTL*>(this)->SetBit(kWarned);
      }
   } else {
      size = cl->Size();
   }
   
   if (fArrayLength) return fArrayLength*size;
   return size;
}

//______________________________________________________________________________
void TStreamerSTL::ls(Option_t *) const
{
   // Print the content of the element.

   TString name(kMaxLen);
   TString cdim;
   name = GetName();
   for (Int_t i=0;i<fArrayDim;i++) {
      cdim.Form("[%d]",fMaxIndex[i]);
      name += cdim;
   }
   TString sequenceType;
   GetSequenceType(sequenceType);
   if (sequenceType.Length()) {
      sequenceType.Prepend(" (");
      sequenceType += ") ";
   }
   printf("  %-14s %-15s offset=%3d type=%2d %s,stl=%d, ctype=%d, %-20s\n",
          GetTypeName(),name.Data(),fOffset,fType,sequenceType.Data(),
          fSTLtype,fCtype,GetTitle());
}

//______________________________________________________________________________
const char *TStreamerSTL::GetInclude() const
{
   // Return the proper include for this element.

   if      (fSTLtype == ROOT::kSTLvector)   gIncludeName.Form("<%s>","vector");
   else if (fSTLtype == ROOT::kSTLlist)     gIncludeName.Form("<%s>","list");
   else if (fSTLtype == ROOT::kSTLdeque)    gIncludeName.Form("<%s>","deque");
   else if (fSTLtype == ROOT::kSTLmap)      gIncludeName.Form("<%s>","map");
   else if (fSTLtype == ROOT::kSTLset)      gIncludeName.Form("<%s>","set");
   else if (fSTLtype == ROOT::kSTLmultimap) gIncludeName.Form("<%s>","map");
   else if (fSTLtype == ROOT::kSTLmultiset) gIncludeName.Form("<%s>","set");
   else if (fSTLtype == ROOT::kSTLbitset)   gIncludeName.Form("<%s>","bitset");
   return gIncludeName;
}

//______________________________________________________________________________
void TStreamerSTL::SetStreamer(TMemberStreamer  *streamer)
{
   // Set pointer to Streamer function for this element
   // NOTE: we do not take ownership

   fStreamer = streamer;
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 2) {
         R__b.ReadClassBuffer(TStreamerSTL::Class(), this, R__v, R__s, R__c);
      } else {
         //====process old versions before automatic schema evolution
         TStreamerElement::Streamer(R__b);
         R__b >> fSTLtype;
         R__b >> fCtype;
         R__b.CheckByteCount(R__s, R__c, TStreamerSTL::IsA());
      }
      if (fSTLtype == ROOT::kSTLmultimap || fSTLtype == ROOT::kSTLset) {
         // For a long time those where inverted in TStreamerElement
         // compared to the other definitions.  When we moved to version '4',
         // this got standardized, but we now need to fix it.
         
         if (fTypeName.BeginsWith("std::set") || fTypeName.BeginsWith("set")) {
            fSTLtype = ROOT::kSTLset;
         } else if (fTypeName.BeginsWith("std::multimap") || fTypeName.BeginsWith("multimap")) {
            fSTLtype = ROOT::kSTLmultimap;
         }
      }

      if (IsaPointer()) fType = TVirtualStreamerInfo::kSTLp;
      else fType = TVirtualStreamerInfo::kSTL;
      if (GetArrayLength() > 0) {
         fType += TVirtualStreamerInfo::kOffsetL;
      }
      if (R__b.GetParent()) { // Avoid resetting during a cloning.
         if (fCtype==TVirtualStreamerInfo::kObjectp || fCtype==TVirtualStreamerInfo::kAnyp || fCtype==TVirtualStreamerInfo::kObjectP || fCtype==TVirtualStreamerInfo::kAnyP) {
            SetBit(kDoNotDelete); // For backward compatibility
         } else if ( fSTLtype == ROOT::kSTLmap || fSTLtype == ROOT::kSTLmultimap) {
            // Here we would like to set the bit only if one of the element of the pair is a pointer, 
            // however we have no easy to determine this short of parsing the class name.
            SetBit(kDoNotDelete); // For backward compatibility
         }
      }
      return;
   } else {
      // To enable forward compatibility we actually save with the old value
      Int_t tmp = fType;
      fType = TVirtualStreamerInfo::kStreamer;
      R__b.WriteClassBuffer(TStreamerSTL::Class(),this);
      fType = tmp;
   }
}

//______________________________________________________________________________

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TStreamerSTLstring implements streaming std::string.                 //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerSTLstring)

//______________________________________________________________________________
TStreamerSTLstring::TStreamerSTLstring()
{
   // Default ctor.

}

//______________________________________________________________________________
TStreamerSTLstring::TStreamerSTLstring(const char *name, const char *title, Int_t offset,
                                       const char *typeName, Bool_t dmPointer)
        : TStreamerSTL()
{
   // Create a TStreamerSTLstring object.

   SetName(name);
   SetTitle(title);

   if (dmPointer) {
      fType = TVirtualStreamerInfo::kSTLp;
   } else {
      fType = TVirtualStreamerInfo::kSTL;
   }

   fNewType = fType;
   fOffset  = offset;
   fSTLtype = ROOT::kSTLstring;
   fCtype   = ROOT::kSTLstring;
   fTypeName= typeName;

}

//______________________________________________________________________________
TStreamerSTLstring::~TStreamerSTLstring()
{
   // TStreamerSTLstring dtor.
}

//______________________________________________________________________________
const char *TStreamerSTLstring::GetInclude() const
{
   // Return the proper include for this element.

   gIncludeName = "<string>";
   return gIncludeName;
}

//______________________________________________________________________________
Int_t TStreamerSTLstring::GetSize() const
{
   // Returns size of anyclass in bytes.

   if (fArrayLength) return fArrayLength*sizeof(string);
   return sizeof(string);
}

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

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
      if (R__v > 1) {
         R__b.ReadClassBuffer(TStreamerSTLstring::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TStreamerSTL::Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, TStreamerSTLstring::IsA());
   } else {
      R__b.WriteClassBuffer(TStreamerSTLstring::Class(),this);
   }
}

//______________________________________________________________________________

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// TStreamerArtificial implements StreamerElement injected by a TSchemaRule. //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

ClassImp(TStreamerSTLstring);

void TStreamerArtificial::Streamer(TBuffer& /* R__b */)
{
   // Avoid streaming the synthetic/artificial streamer elements.

   // Intentionally, nothing to do at all.
   return;
}

ROOT::TSchemaRule::ReadFuncPtr_t     TStreamerArtificial::GetReadFunc()
{
   // Return the read function if any.

   return fReadFunc;
}

ROOT::TSchemaRule::ReadRawFuncPtr_t  TStreamerArtificial::GetReadRawFunc()
{
   // Return the raw read function if any.

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