ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id: AliMergeableCollection.cxx 50593 2011-07-14 17:42:28Z martinez $

///
/// A mergeable object container. 
///
/// For each tuple (key1,key2,..,keyN) a (hash)list of mergeable objects is associated.
/// Note that key1, key2 (optional), ..., keyN (optional) are strings. 
/// Those strings should not contain "/" themselves.
///
/// More helper functions might be added in the future (e.g. Project, etc...)

#include "AliMergeableCollection.h"

using std::cout;
using std::endl;
ClassImp(AliMergeableCollection)

#include "AliLog.h"
#include "Riostream.h"
#include "TError.h"
#include "TFolder.h"
#include "TGraph.h"
#include "TH1.h"
#include "TH2.h"
#include "THashList.h"
#include "THnSparse.h"
#include "TKey.h"
#include "TMap.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TProfile.h"
#include "TRegexp.h"
#include "TROOT.h"
#include "TSystem.h"
#include <cassert>
#include <vector>
#include "TBrowser.h"

//_____________________________________________________________________________
AliMergeableCollection::AliMergeableCollection(const char* name, const char* title) 
: TFolder(name,title), fMap(0x0), fMustShowEmptyObject(0), fMapVersion(0), fMessages()
{
  /// Ctor
}

//_____________________________________________________________________________
AliMergeableCollection::~AliMergeableCollection()
{
  /// dtor. Note that the map is owner
  delete fMap;
}

//_____________________________________________________________________________
Bool_t 
AliMergeableCollection::Adopt(TObject* obj)
{
  /// Adopt a given object at top level (i.e. no key)
  return InternalAdopt("",obj);
}

//_____________________________________________________________________________
Bool_t 
AliMergeableCollection::Adopt(const char* identifier, TObject* obj)
{
  /// Adopt a given object, and associate it with pair key
  TString sidentifier(identifier);
  if ( ! sidentifier.IsNull() ){
    if ( ! sidentifier.EndsWith("/") ) sidentifier.Append("/");
    if ( ! sidentifier.BeginsWith("/") ) sidentifier.Prepend("/");
  }
  return InternalAdopt(sidentifier.Data(),obj);
}

//_____________________________________________________________________________
Bool_t AliMergeableCollection::Attach(AliMergeableCollection* mc, const char* identifier, Bool_t pruneFirstIfAlreadyExists)
{
  /// Attach an already existing mergeable collection to this one.
  /// It is attached at level identifier/
  /// We take ownership of mc
  /// If identifier is already existing we kill it if pruneFirstIfAlreadyExists is kTRUE
  /// (and attach mc) otherwise we return kFALSE (and do *not* attach mc)
  
  THashList* hlist = dynamic_cast<THashList*>(Map()->GetValue(identifier));
  
  if (hlist)
  {
    if (!pruneFirstIfAlreadyExists)
    {
      AliError(Form("%s already exist. Will not overwrite it.",identifier));
      return kFALSE;
    }
    else
    {
      Int_t n = Prune(identifier);
      if (!n)
      {
        AliError(Form("Could not prune pre-existing %s",identifier));
        return kFALSE;        
      }
    }
  }

  TIter next(mc->fMap);
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(next())) )
  {
    THashList* hl = dynamic_cast<THashList*>(mc->Map()->GetValue(str->String()));
    TString newid(Form("/%s%s",identifier,str->String().Data()));
    newid.ReplaceAll("//","/");                  
    Map()->Add(new TObjString(newid.Data()),hl);
  }
  
  return kTRUE;
}

//_____________________________________________________________________________
void AliMergeableCollection::Browse(TBrowser* b)
{
  /// Create a TFolder structure pointing to our objects, so we
  /// can be "browsed"
  
  if ( !fFolders ) return;
  
  TObjArray* ids = SortAllIdentifiers();
  TIter nextIdentifier(ids);
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(nextIdentifier()) ) )
  {
    TObjArray* parts = str->String().Tokenize("/");
    TObjString* s;
    TIter nextPart(parts);
    TFolder* base = this;
    
    while ( ( s = static_cast<TObjString*>(nextPart())))
    {
      TFolder* f = static_cast<TFolder*>(base->TFolder::FindObject(s->String()));
      if (!f)
      {
        f = new TFolder(s->String(),"");
        base->Add(f);
      }
      base = f;
    }
    delete parts;

    TList* list = CreateListOfObjectNames(str->String());
    if (list)
    {
      TObjString* oname;
      TIter nextObject(list);
      while ( ( oname = static_cast<TObjString*>(nextObject())) )
      {
        TObject* o = GetObject(str->String(),oname->String());
        base->Add(o);
      }
    }
    else
    {
      AliError("got list=0x0");
    }
    delete list;
  }

  TList* top = CreateListOfKeys(0);
  TObjString* stop;
  TIter nextTop(top);
  
  while ( ( stop = static_cast<TObjString*>(nextTop())) )
  {
    b->Add(TFolder::FindObject(stop->String()));
  }
  
  delete top;
  
  delete ids;
}

//_____________________________________________________________________________
void AliMergeableCollection::ClearMessages()
{
  /// clear pending messages
  fMessages.clear();
}

//_____________________________________________________________________________
TIterator*
AliMergeableCollection::CreateIterator(Bool_t direction) const
{
  /// Create an iterator (must be deleted by the client)
  return fMap ? new AliMergeableCollectionIterator(this,direction) : 0x0;
}

//_____________________________________________________________________________
AliMergeableCollection*
AliMergeableCollection::Clone(const char* name) const
{
  /// Clone this collection.
  /// We loose the messages.
  
  AliMergeableCollection* newone = new AliMergeableCollection(name,GetTitle());
  
  newone->fMap = static_cast<TMap*>(fMap->Clone());
  newone->fMustShowEmptyObject = fMustShowEmptyObject;
  newone->fMapVersion = fMapVersion;  
  
  return newone;
}

//_____________________________________________________________________________
void 
AliMergeableCollection::Delete(Option_t*)
{
  /// Delete all the objects
  fMap->DeleteAll();
  delete fMap;
  fMap=0x0;
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::FindObject(const char* fullIdentifier) const
{
  /// Find an object by its full identifier.
  
  return GetObject(fullIdentifier);
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::FindObject(const TObject *object) const
{
  /// Find an object 
  AliWarning("This method is awfully inefficient. Please improve it or use FindObject(const char*)");
  TIter next(CreateIterator());
  TObject* obj;
  while ( ( obj=next() ) )
  {
    if ( obj->IsEqual(object) ) return obj;
  }
  return 0x0;
}


//_____________________________________________________________________________
TList*
AliMergeableCollection::CreateListOfKeys(Int_t index) const
{
  /// Create the list of keys at level index
  
  TList* list = new TList;
  list->SetOwner(kTRUE);
  
  TObjArray* ids = SortAllIdentifiers();
  TIter next(ids);
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    TString oneid = GetKey(str->String().Data(),index,kFALSE);
    if (oneid.Length()>0 && !list->Contains(oneid))
    {
      list->Add(new TObjString(oneid));
    }
  }
  
  delete ids;
  return list;
}

//_____________________________________________________________________________
TList* 
AliMergeableCollection::CreateListOfObjectNames(const char* identifier) const
{
  /// Create list of object names for /key1/key2/key...
  /// Returned list must be deleted by client
  
  TList* listOfNames = new TList;
  listOfNames->SetOwner(kTRUE);
  
  TIter next(Map());
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    TString currIdentifier = str->String();
    if ( currIdentifier.CompareTo(identifier) ) continue;
    
    THashList* list = static_cast<THashList*>(Map()->GetValue(identifier));
    
    TIter nextObject(list);
    TObject* obj;
    
    while ( ( obj = nextObject() ) )
    {
      listOfNames->Add(new TObjString(obj->GetName()));
    }    
  }
  
  return listOfNames;
}


//_____________________________________________________________________________
TString
AliMergeableCollection::GetIdentifier(const char* fullIdentifier) const
{
  /// Extract the identifier from the fullIdentifier

  TString identifier;
  
  Int_t n = TString(fullIdentifier).CountChar('/')-1;
  
  for (Int_t i=0; i < n; ++i)
  {
    identifier += "/";
    identifier += InternalDecode(fullIdentifier,i);
  }
  identifier += "/";
  return identifier;
}

//_____________________________________________________________________________
TString
AliMergeableCollection::GetKey(const char* identifier, Int_t index, Bool_t idContainsObjName) const
{
  /// Extract the index element of the key pair from the fullIdentifier

  if ( ! idContainsObjName )
  {
    TString sidentifier(identifier);
    sidentifier.Append("/dummy");
    return InternalDecode(sidentifier.Data(),index);
  }
  
  return InternalDecode(identifier,index);
}

//_____________________________________________________________________________
TString
AliMergeableCollection::GetObjectName(const char* fullIdentifier) const
{
  /// Extract the object name from an identifier
  
  return InternalDecode(fullIdentifier,-1);  
}

//_____________________________________________________________________________
TH1*
AliMergeableCollection::Histo(const char* fullIdentifier) const
{
  /// Get histogram key1/key2/.../objectName:action
  /// action is used for 2D histograms :
  /// might be px for projection along x-axis
  /// py for projection along y-axis
  /// pfx for profile along x-axis
  /// pfy for profile along y-axis
  
  TString sfullIdentifier(fullIdentifier);
  
  TString fullIdWithoutAction(fullIdentifier);
  TString action;
  
  if ( sfullIdentifier.First(':') != kNPOS )
  {
    TObjArray* arr = sfullIdentifier.Tokenize(":");
  
    fullIdWithoutAction = static_cast<TObjString*>(arr->At(0))->String();
  
    if ( arr->GetLast() > 0 )
    {
      action = static_cast<TObjString*>(arr->At(1))->String();
      action.ToUpper();
    }
  
    delete arr;
  }
  
  Int_t nslashes = sfullIdentifier.CountChar('/');
  
  TObject* o(0x0);
  
  if (!nslashes)
  {
    o = GetObject("", fullIdWithoutAction);    
  }  
  else
  {
    o = GetObject(GetIdentifier(fullIdWithoutAction).Data(), GetObjectName(fullIdWithoutAction));
  }
  
  return HistoWithAction(fullIdWithoutAction.Data(),o,action);
}

//_____________________________________________________________________________
TH1*
AliMergeableCollection::Histo(const char* identifier,
                              const char* objectName) const
{
  /// Get histogram key1/key2/.../objectName:action
  /// action is used for 2D histograms :
  /// might be px for projection along x-axis
  /// py for projection along y-axis
  /// pfx for profile along x-axis
  /// pfy for profile along y-axis
  
  TObject* o = GetObject(identifier,objectName);
  
  TObjArray* arr = TString(objectName).Tokenize(":");
  TString action;
  
  if ( arr->GetLast() > 0 )
  {
    action = static_cast<TObjString*>(arr->At(1))->String();
    action.ToUpper();
  }
  
  delete arr;

  return HistoWithAction(identifier,o,action);
}


//_____________________________________________________________________________
TH1*
AliMergeableCollection::HistoWithAction(const char* identifier, TObject* o, const TString& action) const
{
  /// Convert o to an histogram if possible, applying a given action if there

  if (!o) return 0x0;
  
  if (!o->InheritsFrom("TH1"))
  {
    AliError(Form("%s is not an histogram",o->GetName()));
    return 0x0;
  }
  
  TH2* h2 = dynamic_cast<TH2*>(o);
  
  if (h2)
  {
    if ( action == "PX" )
    {
      return h2->ProjectionX(NormalizeName(Form("%s/%s",identifier,o->GetName()),action.Data()).Data());
    }
    if ( action == "PY" )
    {
      return h2->ProjectionY(NormalizeName(Form("%s/%s",identifier,o->GetName()),action.Data()).Data());
    }
    if ( action == "PFX" )
    {
      return h2->ProfileX(NormalizeName(Form("%s/%s",identifier,o->GetName()),action.Data()).Data());
    }
    if ( action == "PFY" )
    {
      return h2->ProfileY(NormalizeName(Form("%s/%s",identifier,o->GetName()),action.Data()).Data());
    }
  }
  
  return static_cast<TH1*>(o);
}

//_____________________________________________________________________________
TH2*
AliMergeableCollection::H2(const char* fullIdentifier) const
{
  /// Short-cut method to grab a 2D histogram
  /// Will return 0x0 if the object if not a TH2xxx

  TObject* o = GetObject(fullIdentifier);
  
  if (o->IsA()->InheritsFrom(TH2::Class()))
  {
    return static_cast<TH2*>(o);
  }
  return 0x0;
}

//_____________________________________________________________________________
TH2*
AliMergeableCollection::H2(const char* identifier,
                           const char* objectName) const
{
  /// Short-cut method to grab a 2D histogram
  /// Will return 0x0 if the object if not a TH2xxx
  
  TObject* o = GetObject(identifier,objectName);
  
  if (o->IsA()->InheritsFrom(TH2::Class()))
  {
    return static_cast<TH2*>(o);
  }
  return 0x0;
}

//_____________________________________________________________________________
TProfile*
AliMergeableCollection::Prof(const char* fullIdentifier) const
{
  /// Short-cut method to grab a TProfile histogram
  /// Will return 0x0 if the object if not a TProfile
  
  TObject* o = GetObject(fullIdentifier);
  
  if (o->IsA()->InheritsFrom(TProfile::Class()))
  {
    return static_cast<TProfile*>(o);
  }
  return 0x0;
}

//_____________________________________________________________________________
TProfile*
AliMergeableCollection::Prof(const char* identifier,
                           const char* objectName) const
{
  /// Short-cut method to grab a TProfile histogram
  /// Will return 0x0 if the object if not a TProfile
  
  TObject* o = GetObject(identifier,objectName);
  
  if (o->IsA()->InheritsFrom(TProfile::Class()))
  {
    return static_cast<TProfile*>(o);
  }
  return 0x0;
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::GetObject(const char* fullIdentifier) const
{
  /// Get object key1/key2/.../objectName
  /// Note that no action is allowed for generic objects (only for histograms,
  /// see Histo() methods)
  
  TString sfullIdentifier(fullIdentifier);
  
  Int_t nslashes = sfullIdentifier.CountChar('/');
  
  if (!nslashes)
  {
    return GetObject("", sfullIdentifier);
  }
  else
  {
    return GetObject(GetIdentifier(fullIdentifier).Data(), GetObjectName(fullIdentifier));
  }
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::GetObject(const char* identifier, 
                                  const char* objectName) const
{
  /// Get object for (identifier,objectName) triplet
  
  TString sidentifier(identifier);
  if ( ! sidentifier.IsNull() ) {
    if ( ! sidentifier.BeginsWith("/") ) sidentifier.Prepend("/");
    if ( ! sidentifier.EndsWith("/") ) sidentifier.Append("/");
  }
  return InternalObject(sidentifier.Data(),objectName);
}

//_____________________________________________________________________________
TObject* AliMergeableCollection::GetSum(const char* idPattern) const
{
  /// Sum objects
  /// The pattern must be in the form:
  /// /key1_1,key1_2,.../key2_1,key2_2,.../.../objectName_1,objectName_2...
  /// The logical or between patterns separated by commas is taken
  /// Exact match is required for keys and objectNames
  
  TObject* sumObject = 0x0;
  
  // Build array of lists of pattern
  TString idPatternString(idPattern);
  TObjArray* keyList = idPatternString.Tokenize("/");
  TObjArray keyMatrix(keyList->GetEntries());
  keyMatrix.SetOwner();
  for ( Int_t ikey=0; ikey<keyList->GetEntries(); ikey++ ) {
    TObjArray* subKeyList = ((TObjString*)keyList->At(ikey))->GetString().Tokenize(",");
    keyMatrix.AddAt(subKeyList, ikey);
  }
  delete keyList;
  
  TString debugMsg = "Adding objects:";
  
  //
  // First handle the keys
  //
  TIter next(Map());
  TObjString* str;
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    TString identifier = str->String();
    
    Bool_t listMatchPattern = kTRUE;
    for ( Int_t ikey=0; ikey<keyMatrix.GetEntries()-1; ikey++ ) {
      TString currKey = GetKey(identifier, ikey, kFALSE);
      Bool_t matchKey = kFALSE;
      TObjArray* subKeyList = static_cast<TObjArray*> ( keyMatrix.At(ikey) );
      for ( Int_t isub=0; isub<subKeyList->GetEntries(); isub++ ) {
        TString subKeyString = static_cast<TObjString*> (subKeyList->At(isub))->GetString();
        if ( currKey == subKeyString ) {
          matchKey = kTRUE;
          break;
        }
      } // loop on the list of patterns of each key
      if ( ! matchKey ) {
        listMatchPattern = kFALSE;
        break;
      }
    } // loop on keys in the idPattern
    if ( ! listMatchPattern ) continue;
    
    
    //
    // Then handle the object name
    //
    THashList* list = static_cast<THashList*>(Map()->GetValue(identifier.Data()));
    
    TIter nextObj(list);
    TObject* obj;
    
    while ( ( obj = nextObj()) )
    {
      TString currKey = obj->GetName();
      Bool_t matchKey = kFALSE;
      TObjArray* subKeyList = static_cast<TObjArray*> ( keyMatrix.Last() );
      for ( Int_t isub=0; isub<subKeyList->GetEntries(); isub++ ) {
        TString subKeyString = static_cast<TObjString*> (subKeyList->At(isub))->GetString();
        if ( currKey == subKeyString ) {
          matchKey = kTRUE;
          break;
        }
      }
      if ( ! matchKey ) continue;
      if ( ! sumObject ) sumObject = obj->Clone();
      else MergeObject(sumObject, obj);
      debugMsg += Form(" %s%s",identifier.Data(),obj->GetName());
    } // loop on objects in list
  } // loop on identifiers in map
  
  AliDebug(1,debugMsg.Data());
  
  return sumObject;
}

//_____________________________________________________________________________
Bool_t AliMergeableCollection::InternalAdopt(const char* identifier, TObject* obj)
{
  /// Adopt an obj
  
  if (!obj)
  {
    Error("Adopt","Cannot adopt a null object");
    return kFALSE;
  }
  
  if ( ! obj->IsA()->InheritsFrom(TObject::Class()) ||
        ! obj->IsA()->GetMethodWithPrototype("Merge", "TCollection*") ) {
    Error("Adopt","Cannot adopt an object which is not mergeable!"); 
  }
  
  THashList* hlist = 0x0;
  
  hlist = static_cast<THashList*>(Map()->GetValue(identifier));
  
  if (!hlist)
  {
    hlist = new THashList;
    hlist->SetOwner(kTRUE);
    Map()->Add(new TObjString(identifier),hlist);
    hlist->SetName(identifier);
  }
  
  TObject* existingObj = hlist->FindObject(obj->GetName());
  
  if (existingObj)
  {
    AliError(Form("Cannot adopt an already existing object : %s -> %s",identifier,existingObj->GetName()));
    return kFALSE;
  }
  
  if ( obj->IsA()->InheritsFrom(TH1::Class()) ) (static_cast<TH1*> ( obj ))->SetDirectory(0);  
  
  hlist->AddLast(obj);
    
  return kTRUE;
  
}

//_____________________________________________________________________________
TString
AliMergeableCollection::InternalDecode(const char* identifier, Int_t index) const
{
  /// Extract the index-th element of the identifier (/key1/key2/.../keyN/objectName)
  /// object is index=-1 (i.e. last)
  
  if ( strlen(identifier) > 0 && identifier[0] != '/' ) 
  {    
    AliError(Form("identifier %s is malformed (should start with /)",identifier));
    return "";
  }
  
  std::vector<Int_t> splitIndex;
  
  Int_t start(0);
  TString sidentifier(identifier);
  
  while (start < sidentifier.Length())
  {
    Int_t pos = sidentifier.Index('/', start);
    if (pos == kNPOS) break;
    splitIndex.push_back(pos);
    start = pos + 1;
  }

  Int_t nkeys = splitIndex.size() - 1;
  
  if ( index >= nkeys )
  {
    AliError(Form("Requiring index %i of identifier %s which only have %i",index, identifier, nkeys));
    return "";
  }

  if ( index < 0 )
  {
    return sidentifier(splitIndex.back()+1,sidentifier.Length()-splitIndex.back()-1);
  }

  return sidentifier(splitIndex[index]+1,splitIndex[index+1]-splitIndex[index]-1);
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::InternalObject(const char* identifier,
                                       const char* objectName) const
{
  /// Get object for (identifier,objectName) 
  
  if (!fMap) 
  {
    return 0x0;
  }
  
  THashList* hlist = static_cast<THashList*>(Map()->GetValue(identifier));
  if (!hlist) 
  {
    TString msg(Form("Did not find hashlist for identifier=%s dir=%s",identifier,gDirectory ? gDirectory->GetName() : "" ));
    fMessages[msg.Data()]++;
    return 0x0;
  }
  
  TObject* obj = hlist->FindObject(objectName);
  if (!obj)
  {
    TString msg(Form("Did not find objectName=%s in %s",objectName,identifier));
    fMessages[msg.Data()]++;
  }
  return obj;
}


//_____________________________________________________________________________
Bool_t AliMergeableCollection::IsEmptyObject(TObject* obj) const
{
  /// Check if object is empty
  /// (done only for TH1, so far)
    
  if ( obj->IsA()->InheritsFrom(TH1::Class()) ) {
    TH1* histo = static_cast<TH1*> (obj);
    if ( histo->GetEntries() == 0 ) return kTRUE;
  }

  return kFALSE;

}


//_____________________________________________________________________________
TMap* AliMergeableCollection::Map() const
{
  /// Wrapper to insure proper key formats (i.e. new vs old)
  
  if (!fMap)
  {
    fMap = new TMap;
    fMap->SetOwnerKeyValue(kTRUE,kTRUE);
    fMapVersion = 1;
  }
  else
  {
    if ( fMapVersion < 1 ) 
    {
      AliInfo("Remapping");
      // change the keys
      TIter next(fMap);
      TObjString* str;
      
      while ( ( str = static_cast<TObjString*>(next()) ) )
      {
        if ( str->String().Contains("./") )
        {
          TString newkey(str->String());
          
          newkey.ReplaceAll("./","");
          
          TObject* o = fMap->GetValue(str);
          
          TPair* p = fMap->RemoveEntry(str);
          if (!p)
          {
            AliError("oups oups oups");
            return 0x0;
          }
          
          fMap->Add(new TObjString(newkey.Data()),o);
          
          delete p;
        }
      }
      
      fMapVersion = 1;
    }
  }
  
  return fMap;
}

//_____________________________________________________________________________
Long64_t
AliMergeableCollection::Merge(TCollection* list)
{
  // Merge a list of AliMergeableCollection objects with this
  // Returns the number of merged objects (including this).
  
  if (!list) return 0;
  
  if (list->IsEmpty()) return 1;
  
  TIter next(list);
  TObject* currObj;
  TList mapList;
  Int_t count(0);
  
  while ( ( currObj = next() ) )
  {
    AliMergeableCollection* mergeCol = dynamic_cast<AliMergeableCollection*>(currObj);
    if (!mergeCol) {
      AliFatal(Form("object named \"%s\" is a %s instead of an AliMergeableCollection!", currObj->GetName(), currObj->ClassName()));
      continue;
    }
    
    ++count;
    
    if ( mergeCol->fMap ) mergeCol->Map(); // to insure keys in the new format
    
    TIter nextIdentifier(mergeCol->fMap);
    TObjString* identifier;

    while ( ( identifier = static_cast<TObjString*>(nextIdentifier()) ) )
    {
      THashList* otherList = static_cast<THashList*>(mergeCol->fMap->GetValue(identifier->String().Data()));

      TIter nextObject(otherList);
      TObject* obj;
      
      while ( ( obj = nextObject() ) )
      {
        TString newid(Form("%s%s",identifier->String().Data(),obj->GetName()));
        
        TObject* thisObject = GetObject(newid.Data());
        
        if (!thisObject)
        {
          AliDebug(1,Form("Adopting a new object = %s%s",identifier->String().Data(),obj->GetName()));
          
          Bool_t ok = Adopt(identifier->String(), obj->Clone());
          
          if (!ok)
          {
            AliError(Form("Adoption of object %s failed",obj->GetName()));
          }
        }
        else
        {
          // add it...
          AliDebug(1,Form("Merging object = %s%s",
                          identifier->String().Data(),
                          obj->GetName()));
          
          MergeObject(thisObject, obj);
        }
      } // loop on objects in map
    } // loop on identifiers
  } // loop on collections in list
         
  AliDebug(1,Form("count=%d",count));
  
  return count+1;
}

//_____________________________________________________________________________
Bool_t AliMergeableCollection::MergeObject(TObject* baseObject, TObject* objToAdd)
{
  /// Add objToAdd to baseObject
  
  if ( baseObject->IsA()->Class() != objToAdd->IsA()->Class() ) {
    printf("MergeObject: Cannot add %s to %s", objToAdd->ClassName(), baseObject->ClassName());
    return kFALSE;
  }
  if ( ! baseObject->IsA()->InheritsFrom(TObject::Class()) ||
      ! baseObject->IsA()->GetMethodWithPrototype("Merge", "TCollection*") ) {
    printf("MergeObject: Objects are not mergeable!");
    return kFALSE;
  }  
  
  TList list;
  list.Add(objToAdd);
  
  TString listArgs = Form("((TCollection*)0x%lx)", (ULong_t)&list);
  Int_t error = 0;
  baseObject->Execute("Merge", listArgs.Data(), &error);
  return kTRUE;
}

//_____________________________________________________________________________
TString AliMergeableCollection::NormalizeName(const char* identifier,const char* action) const
{
  /// Replace / by _ to build a root-compliant histo name
  TString name(GetName());
  
  name += "_";
  name += identifier;
  name += "_";
  name += action;
  name.ReplaceAll("/","_");
  name.ReplaceAll("-","_");
  return name;
}

//_____________________________________________________________________________
Int_t 
AliMergeableCollection::NumberOfObjects() const
{
  /// Get the number of objects we hold
  TIter next(CreateIterator());
  Int_t count(0);
  while ( next() ) ++count;
  return count;
}

//_____________________________________________________________________________
Int_t 
AliMergeableCollection::NumberOfKeys() const
{
  /// Get the number of keys we have
  return fMap ? fMap->GetSize() : 0;
}

//_____________________________________________________________________________
void 
AliMergeableCollection::Print(Option_t* option) const
{
  /// Print all the objects we hold, in a hopefully visually pleasing
  /// way.
  ///
  /// Option can be used to select given part only, using the schema :
  /// /*/*/*/*/*
  /// Where the stars are wilcards for /key1/key2/.../objectName
  ///
  /// if * is used it is assumed to be a wildcard for objectName
  ///
  /// For other selections the full syntax /*/*/*/*/* must be used.
  /// 
  /// Use "-" as objectName to disable object's name output
  ///
  /// One might also use /*/*/*/*/:classname syntax to restrict
  /// output to only those objects matching a given classname pattern
  ///
  
  cout << Form("AliMergeableCollection(%s,%s)[%p] : %d keys and %d objects",
               GetName(),GetTitle(),this,
               NumberOfKeys(), NumberOfObjects()) << endl;
  
  if (!strlen(option)) return;
  
  TString soption(option);
  
  TObjArray* classes = soption.Tokenize(":");
  
  TRegexp* classPattern(0x0);
  
  if ( classes->GetLast() > 0 )
  {
    TString pat = static_cast<TObjString*>(classes->At(1))->String();
    classPattern = new TRegexp(pat,kTRUE);
    soption = static_cast<TObjString*>(classes->At(0))->String();
  }
  
  delete classes;

  TObjArray* select = soption.Tokenize("/");
  
  TString sreObjectName(select->Last()->GetName());
  TRegexp reObjectName(sreObjectName.Data(),kTRUE);
  
  TObjArray* identifiers = SortAllIdentifiers();
  
  std::cout << Form("Number of identifiers %d", identifiers->GetEntries()) << std::endl;
    
  TIter nextIdentifier(identifiers);
  
  TObjString* sid(0x0);
  
  while ( ( sid = static_cast<TObjString*>(nextIdentifier()) ) )
  {
    Bool_t identifierPrinted(kFALSE);

    TString identifier(sid->String());
    
    Bool_t matchPattern = kTRUE;
    for ( Int_t isel=0; isel<select->GetLast(); isel++ ) {
      if ( ! GetKey(identifier.Data(), isel, kFALSE).Contains(TRegexp(select->At(isel)->GetName(),kTRUE)) ) {
        matchPattern = kFALSE;
        break;
      }
    }
    if ( ! matchPattern ) continue;
    
    if ( sreObjectName == "*" && !classPattern)
    {
      identifierPrinted = kTRUE;
      cout << identifier.Data() << endl;
    }
      
    THashList * list = static_cast<THashList*>(Map()->GetValue(sid->String().Data()));

    TObjArray names;
    names.SetOwner(kTRUE);
    TIter nextUnsortedObj(list);
    TObject* obj;
    while ( ( obj = nextUnsortedObj() ) )
    {
      TString cname(obj->ClassName());
      if ( classPattern && !cname.Contains((*classPattern)) )
      {
        continue;
      }
      names.Add(new TObjString(obj->GetName()));
    }
    names.Sort();
    TIter nextObjName(&names);
    TObjString* oname;
    while ( ( oname = static_cast<TObjString*>(nextObjName()) ) )
    {
      TString objName(oname->String());
      if (objName.Contains(reObjectName) )
      {
        obj = list->FindObject(objName.Data());
        if ( IsEmptyObject(obj) && ! fMustShowEmptyObject ) continue;
        
        if (!identifierPrinted)
        {
          cout << identifier.Data() << endl;
          identifierPrinted = kTRUE;
        }
        
        TString extra;
        TString warning("   ");
        
        if ( obj->IsA()->InheritsFrom(TH1::Class()) )
        {
          
          TH1* histo = static_cast<TH1*> (obj);
          extra.Form("%s | Entries=%d Sum=%g",histo->GetTitle(),Int_t(histo->GetEntries()),histo->GetSumOfWeights());
        }
        else if ( obj->IsA()->InheritsFrom(TGraph::Class()) )
        {
          TGraph* graph = static_cast<TGraph*> (obj);
          if ( ! TMath::Finite(graph->GetMean(2) ) )
          {
            warning = " ! ";
          }
          extra.Form("%s | Npts=%d Mean=%g RMS=%g",graph->GetTitle(),graph->GetN(),
                       graph->GetMean(2),graph->GetRMS(2));
          
        }
        
        std::cout << Form("    (%s) %s %s", obj->ClassName(),
                     warning.Data(),
                          obj->GetName());
        
        if ( extra.Length() )
        {
          std::cout << " | " << extra.Data();
        }
        std::cout << std::endl;
      }
    }
    if (!identifierPrinted && sreObjectName=="-" )
    { 
      // to handle the case where we used objectName="-" to disable showing the objectNames,
      // but we still want to see the matching keys maybe...
      cout << identifier.Data() << endl;
    }
  }
  
  delete select;
  
  delete identifiers;
}

//_____________________________________________________________________________
void 
AliMergeableCollection::PrintMessages(const char* prefix) const
{
  /// Print pending messages
  
  std::map<std::string,int>::const_iterator it;
  
  for ( it = fMessages.begin(); it != fMessages.end(); ++it ) 
  {
    cout << Form("%s : message %s appeared %5d times",prefix,it->first.c_str(),it->second) << endl;
  }
}


//_____________________________________________________________________________
UInt_t 
AliMergeableCollection::EstimateSize(Bool_t show) const
{
  /// Estimate the memory (in kilobytes) used by some objects

//  For TH1:
//  sizeof(TH1) + (nbins+2)*(nbytes_per_bin) +name+title_sizes 
//  if you have errors add (nbins+2)*8 
    
  TIter next(CreateIterator());
  
  TObject* obj;
  UInt_t size(0);
  
  while ( ( obj = next() ) )
  {
    UInt_t thissize=0;
    if ( obj->IsA()->InheritsFrom(TH1::Class()) || obj->IsA()->InheritsFrom(TProfile::Class()) )
    {
      TH1* histo = static_cast<TH1*> (obj);
      Int_t nbins = (histo->GetNbinsX()+2);
    
      if (histo->GetNbinsY()>1)
      {
        nbins *= (histo->GetNbinsY()+2);
      }
    
      if (histo->GetNbinsZ()>1)
      {
        nbins *= (histo->GetNbinsZ()+2);
      }
      
      Bool_t hasErrors = ( histo->GetSumw2N() > 0 );
    
      TString cname(histo->ClassName());
    
      Int_t nbytesPerBin(0);
    
      if (cname.Contains(TRegexp("C$")) ) nbytesPerBin = sizeof(Char_t);
      if (cname.Contains(TRegexp("S$")) ) nbytesPerBin = sizeof(Short_t);
      if (cname.Contains(TRegexp("I$")) ) nbytesPerBin = sizeof(Int_t);
      if (cname.Contains(TRegexp("F$")) ) nbytesPerBin = sizeof(Float_t);
      if (cname.Contains(TRegexp("D$")) ) nbytesPerBin = sizeof(Double_t);
      if (cname=="TProfile") nbytesPerBin = sizeof(Double_t);
        
      if (!nbytesPerBin)
      {
        AliError(Form("Could not get the number of bytes per bin for histo %s of class %s. Thus the size estimate will be wrong !",
                      histo->GetName(),histo->ClassName()));
        continue;
      }
    
      thissize = sizeof(histo) + nbins*(nbytesPerBin) + strlen(histo->GetName())
      + strlen(histo->GetTitle());
      
      if ( hasErrors) thissize += nbins*8;
      
      if ( obj->IsA()->InheritsFrom(TProfile::Class()) )
      {
        TProfile* prof = static_cast<TProfile*>(obj);
        TArrayD* d = prof->GetBinSumw2();
        thissize += d->GetSize()*8*2; // 2 TArrayD
        thissize += sizeof(prof) - sizeof(histo);
      }
    }
    else if ( obj->IsA()->InheritsFrom(THnSparse::Class()) ) {
      THnSparse* sparse = static_cast<THnSparse*> (obj);
      thissize = sizeof(Float_t) * (UInt_t)sparse->GetNbins();
    }
//    else if ( obj->IsA() == AliCFGridSparse::Class() ) {
//      AliCFGridSparse* sparse = static_cast<AliCFGridSparse*> (obj);
//      thissize = sizeof(Float_t) * (UInt_t)sparse->GetNFilledBins();
//    }
//    else if ( obj->IsA() == AliCFContainer::Class() ) {
//      AliCFContainer* cont = static_cast<AliCFContainer*> (obj);
//      for ( Int_t istep=0; istep<cont->GetNStep(); istep++ ) {
//        thissize += sizeof(Float_t) * (UInt_t)cont->GetGrid(istep)->GetNFilledBins();
//      }
//    }
    else {
      AliWarning(Form("Cannot estimate size of %s\n", obj->ClassName()));
      continue;
    }

    size += thissize;
    
    if ( show ) 
    {
      AliInfo(Form("Size of %30s is %20d bytes",obj->GetName(),thissize));
    }
  } // loop on objects

  return size;
}

//_____________________________________________________________________________
Int_t AliMergeableCollection::Prune(const char* identifier)
{
  // Delete all objects which match the beginning of the identifier
  // returns the number of entries removed from the Map()
  // (not to be confused with the number of leaf objects removed)
  //
  
  TIter next(Map());
  TObjString* key;
  Int_t ndeleted(0);
  
  while ( ( key = static_cast<TObjString*>(next())) )
  {
      if (key->String().BeginsWith(identifier))
      {
        Bool_t ok = Map()->DeleteEntry(key);
        if (ok) ++ndeleted;
      }
  }
  
  return ndeleted;
}

//_____________________________________________________________________________
void AliMergeableCollection::PruneEmptyObjects()
{
  /// Delete the empty objects
  /// (Implemented for TH1 only)
  TIter next(Map());
  TObjString* key;
  
  TList toBeRemoved;
  toBeRemoved.SetOwner(kTRUE);
  
  while ( ( key = static_cast<TObjString*>(next()) ) )
  {
    TString identifier(key->String());
    THashList* hlist = static_cast<THashList*>(Map()->GetValue(identifier.Data()));
    TIter nextObject(hlist);
    TObject* obj;
    while ( ( obj = nextObject() ) )
    {
      if ( IsEmptyObject(obj) ) toBeRemoved.Add(new TObjString(Form("%s%s",identifier.Data(),obj->GetName())));
    }
  }
  
  TIter nextTBR(&toBeRemoved);
  while ( ( key = static_cast<TObjString*>(nextTBR()) ) )
  {
    Remove(key->GetString().Data());
    AliDebug(2,Form("Removing %s", key->GetString().Data()));
  }
}

//_____________________________________________________________________________
AliMergeableCollection* 
AliMergeableCollection::Project(const char* identifier) const
{
  /// To be implemented : would create a new collection starting at /key1/key2/...
  
  if (!fMap) return 0x0;
  
  AliMergeableCollection* mergCol = new AliMergeableCollection(Form("%s %s",GetName(),identifier),
                                                               GetTitle());
  
  TIter next(Map());
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    TString currIdentifier = str->String();
    if ( ! currIdentifier.Contains(identifier) ) continue;
    
    THashList* list = static_cast<THashList*>(Map()->GetValue(identifier));
    
    TIter nextObj(list);
    TObject* obj;
    
    while ( ( obj = nextObj()) )
    {
      TObject* clone = obj->Clone();

      TString newkey(currIdentifier.Data());
      newkey.ReplaceAll(identifier,"");

      if (newkey=="/") newkey="";
      
      mergCol->InternalAdopt(newkey.Data(),clone);
    }    
  }

  return mergCol;
}

//_____________________________________________________________________________
TObject* 
AliMergeableCollection::Remove(const char* fullIdentifier)
{
  ///
  /// Remove a given object (given its fullIdentifier=/key1/key2/.../objectName)
  ///
  /// Note that we do *not* remove the /key1/key2/... entry even if there's no
  /// more object for this triplet.
  ///
  /// Not very efficient. Could be improved ?
  ///
  
  TString identifier = GetIdentifier(fullIdentifier);
  
  THashList* hlist = dynamic_cast<THashList*>(Map()->GetValue(identifier.Data()));
  
  if (!hlist)
  {
    AliWarning(Form("Could not get hlist for key=%s",identifier.Data()));
    return 0x0;
  }
    
  TObject* obj = GetObject(fullIdentifier);
  if (!obj)
  {
    AliError(Form("Could not find object %s",fullIdentifier));
    return 0x0;
  }
  
  TObject* rmObj = hlist->Remove(obj);
  if (!rmObj)
  {
    AliError("Remove failed");
    return 0x0;
  }
  
  return rmObj;
}

//_____________________________________________________________________________
Int_t AliMergeableCollection::RemoveByType(const char* typeName)
{
  /// Remove all the objects in this collection that are of a given type
  TIter nextIdentifier(Map());
  TObjString* identifier;
  Int_t nremoved(0);
  
  while ( (identifier = static_cast<TObjString*>(nextIdentifier()) ) )
  {
    THashList* list  = static_cast<THashList*>(Map()->GetValue(identifier->String()));
    TIter next(list);
    TObject* o;
    
    while ( ( o = next() ) )
    {
      if ( strcmp(o->ClassName(),typeName) == 0 )
      {
        list->Remove(o);
        ++nremoved;
      }
    }
  }
  return nremoved;
}


//_____________________________________________________________________________
TObjArray*
AliMergeableCollection::SortAllIdentifiers() const
{
  /// Sort our internal identifiers. Returned array must be deleted.
  TObjArray* identifiers = new TObjArray;
  identifiers->SetOwner(kFALSE); 
  TIter next(Map());
  TObjString* sid;
  
  while ( ( sid = static_cast<TObjString*>(next()) ) )
  {
    if ( !identifiers->FindObject(sid->String().Data()) )
    {
      identifiers->Add(sid);      
    }
  }
  identifiers->Sort();
  return identifiers;
}


///////////////////////////////////////////////////////////////////////////////
//
// AliMergeableCollectionIterator
//
///////////////////////////////////////////////////////////////////////////////

class AliMergeableCollectionIterator;

//_____________________________________________________________________________
AliMergeableCollectionIterator::AliMergeableCollectionIterator(const AliMergeableCollection* mcol, Bool_t dir)
: fkMergeableCollection(mcol), fMapIterator(0x0), fHashListIterator(0x0), fDirection(dir)
{
  /// Default ctor
}

//_____________________________________________________________________________
AliMergeableCollectionIterator&
AliMergeableCollectionIterator::operator=(const TIterator&)
{
  /// Overriden operator= (imposed by Root's declaration of TIterator ?)
  Fatal("TIterator::operator=","Not implementeable"); // because there's no clone in TIterator :-(
  return *this;
}

//_____________________________________________________________________________
AliMergeableCollectionIterator::~AliMergeableCollectionIterator()
{
  /// dtor
  Reset();
}

//_____________________________________________________________________________
TObject* AliMergeableCollectionIterator::Next()
{
  /// Advance to next object in the collection
  
  if (!fHashListIterator)
  {
    if ( !fMapIterator ) 
    {
      fMapIterator = fkMergeableCollection->fMap->MakeIterator(fDirection);
    }
    TObjString* key = static_cast<TObjString*>(fMapIterator->Next());
    if (!key)
    {
      // we are done
      return 0x0;
    }      
    THashList* list = static_cast<THashList*>(fkMergeableCollection->Map()->GetValue(key->String().Data()));
    if (!list) return 0x0;
    fHashListIterator = list->MakeIterator(fDirection);
  }

  TObject* obj = fHashListIterator->Next();
  
  if (!obj) 
  {
    delete fHashListIterator;
    fHashListIterator = 0x0;
    return Next();
  }
  
  return obj;
}

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