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$ */
// Author: Andrei Gheata, 31/05/2006

//==============================================================================
//   AliAnalysysDataContainer - Container of data of arbitrary type deriving
//      from TObject used for analysis. A container must be connected to the 
//      output data slot of a single analysis task (producer) , but also as 
//      input slot for possibly several other tasks (consumers). The connected 
//      slots must enforce the same data type as the container (or a derived type).
//      A container becomes the owner of the contained data once this was produced.
//
// Containers should be defined by the analysis module using:
//
//   AliAnalysisModule::AddContainer(const char *name, TClass *type);
//
// A container should be connected to a producer:

//   AliAnalysisModule::ConnectOutput(AliAnalysisTask *task,
//                                    AliAnalysisDataContainer *cont)
// and to its consumers:
//
//   AliAnalysisModule::ConnectInput(AliAnalysisTask *task, Int_t islot,
//                                   AliAnalysisDataContainer *cont)
//
// The container will create an implicit connection between the producer task 
// and all consumers, which will become sub-tasks of the producer.
//
//==============================================================================

#include <Riostream.h>
#include <TMethodCall.h>

#include <TClass.h>
#include <TSystem.h>
#include <TFile.h>
#include <TTree.h>
#include <TH1.h>
#include <TROOT.h>

#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"
#include "AliAnalysisDataSlot.h"
#include "AliAnalysisTask.h"

using std::endl;
using std::cout;
using std::ios;
using std::setiosflags;
using std::setprecision;
ClassImp(AliAnalysisDataContainer)

//______________________________________________________________________________
AliAnalysisDataContainer::AliAnalysisDataContainer() : TNamed(),
                          fDataReady(kFALSE),
                          fOwnedData(kFALSE),
                          fFileName(),
                          fFolderName(),
                          fFile(NULL),
                          fData(NULL),
                          fType(NULL),
                          fProducer(NULL),
                          fConsumers(NULL)
{
// Dummy ctor.
}

//______________________________________________________________________________
AliAnalysisDataContainer::AliAnalysisDataContainer(const char *name, TClass *type)
                         :TNamed(name,""),
                          fDataReady(kFALSE),
                          fOwnedData(kFALSE),
                          fFileName(),
                          fFolderName(),
                          fFile(NULL),
                          fData(NULL),
                          fType(type),
                          fProducer(NULL),
                          fConsumers(NULL)
{
// Default constructor.
   SetTitle(fType->GetName());
}

//______________________________________________________________________________
AliAnalysisDataContainer::AliAnalysisDataContainer(const AliAnalysisDataContainer &cont)
                         :TNamed(cont),
                          fDataReady(cont.fDataReady),
                          fOwnedData(kFALSE),
                          fFileName(cont.fFileName),
                          fFolderName(cont.fFolderName),
                          fFile(NULL),
                          fData(cont.fData),
                          fType(NULL),
                          fProducer(cont.fProducer),
                          fConsumers(NULL)
{
// Copy ctor.
   GetType();
   if (cont.fConsumers) {
      fConsumers = new TObjArray(2);
      Int_t ncons = cont.fConsumers->GetEntriesFast();
      for (Int_t i=0; i<ncons; i++) fConsumers->Add(cont.fConsumers->At(i));
   }   
}

//______________________________________________________________________________
AliAnalysisDataContainer::~AliAnalysisDataContainer()
{
// Destructor. Deletes data ! (What happens if data is a container ???)
   if (fData && fOwnedData) delete fData;
   if (fConsumers) delete fConsumers;
}

//______________________________________________________________________________
AliAnalysisDataContainer &AliAnalysisDataContainer::operator=(const AliAnalysisDataContainer &cont)
{
// Assignment.
   if (&cont != this) {
      TNamed::operator=(cont);
      fDataReady = cont.fDataReady;
      fOwnedData = kFALSE;
      fFileName = cont.fFileName;
      fFolderName = cont.fFolderName;
      fFile = NULL;
      fData = cont.fData;
      GetType();
      fProducer = cont.fProducer;
      if (cont.fConsumers) {
         fConsumers = new TObjArray(2);
         Int_t ncons = cont.fConsumers->GetEntriesFast();
         for (Int_t i=0; i<ncons; i++) fConsumers->Add(cont.fConsumers->At(i));
      }   
   }   
   return *this;
}      

//______________________________________________________________________________
void AliAnalysisDataContainer::AddConsumer(AliAnalysisTask *consumer, Int_t islot)
{
// Add a consumer for contained data;
   AliAnalysisDataSlot *slot = consumer->GetInputSlot(islot);
   if (!slot || !slot->GetType()) {
     cout<<"Consumer task "<< consumer->GetName()<<" does not have an input/type #"<<islot<<endl;
     //AliError(Form("Consumer task %s does not have an input #%i", consumer->GetName(),islot));
      return;
   }
   if (!slot->GetType()->InheritsFrom(GetType())) {
     cout<<"Data type "<<slot->GetTitle()<<" for input slot "<<islot<<" of task "<<consumer->GetName()<<" does not match container type "<<GetTitle()<<endl;  
     //AliError(Form("Data type %s for input slot %i of task %s does not match container type %s", slot->GetType()->GetName(),islot,consumer->GetName(),fType->GetName()));
      return;
   }   

   if (!fConsumers) fConsumers = new TObjArray(2);   
   fConsumers->Add(consumer);
   // Add the consumer task to the list of task of the producer
   if (fProducer && !fProducer->GetListOfTasks()->FindObject(consumer)) 
      fProducer->Add(consumer);
}      

//______________________________________________________________________________
Bool_t AliAnalysisDataContainer::ClientsExecuted() const
{
// Check if all client tasks have executed.
   TIter next(fConsumers);
   AliAnalysisTask *task;
   while ((task=(AliAnalysisTask*)next())) {
      if (!task->HasExecuted()) return kFALSE;
   }
   return kTRUE;
}   

//______________________________________________________________________________
void AliAnalysisDataContainer::DeleteData()
{
// Delete data if not needed anymore.
   if (!fDataReady || !ClientsExecuted()) {
     cout<<"Data not ready or not all clients of container "<<GetName()<<" executed. Data not deleted."<<endl;
     //AliWarning(Form("Data not ready or not all clients of container %s executed. Data not deleted.", GetName()));
      return;
   }
   if (!fOwnedData) {
     cout<<"Data not owned by container "<<GetName()<<". Not deleted."<<endl;
     //AliWarning(Form("Data not owned by container %s. Not deleted.", GetName()));
      return;
   }
   delete fData;
   fData = 0;
   fDataReady = kFALSE;
}   

//______________________________________________________________________________
TClass *AliAnalysisDataContainer::GetType() const
{
// Get class type for this slot.
   AliAnalysisDataContainer *cont = (AliAnalysisDataContainer*)this;
   if (!fType) cont->SetType(gROOT->GetClass(fTitle.Data()));
   if (!fType) printf("AliAnalysisDataContainer: Unknown class: %s\n", GetTitle());
   return fType;
}

//______________________________________________________________________________
void AliAnalysisDataContainer::GetEntry(Long64_t ientry)
{
// If data is ready and derives from TTree or from TBranch, this will get the
// requested entry in memory if not already loaded.
   if (!fDataReady || !GetType()) return;
   Bool_t istree = fType->InheritsFrom(TTree::Class());
   if (istree) {
      TTree *tree = (TTree*)fData;
      if (tree->GetReadEntry() != ientry) tree->GetEntry(ientry);
      return;
   }   
   Bool_t isbranch = fType->InheritsFrom(TBranch::Class());
   if (isbranch) {
      TBranch *branch = (TBranch*)fData;
      if (branch->GetReadEntry() != ientry) branch->GetEntry(ientry);
      return;
   }   
}   

//______________________________________________________________________________
Long64_t AliAnalysisDataContainer::Merge(TCollection *list)
{
// Merge a list of containers with this one. Containers in the list must have
// data of the same type.
   if (!list || !fData) return 0;
   printf("Merging %d containers %s\n", list->GetSize()+1, GetName());
   TMethodCall callEnv;
   if (fData->IsA())
      callEnv.InitWithPrototype(fData->IsA(), "Merge", "TCollection*");
   if (!callEnv.IsValid() && !list->IsEmpty()) {
      cout << "No merge interface for data stored by " << GetName() << ". Merging not possible !" << endl;
      return 1;
   }

   if (list->IsEmpty()) return 1;

   TIter next(list);
   AliAnalysisDataContainer *cont;
   // Make a list where to temporary store the data to be merged.
   TList *collectionData = new TList();
   Int_t count = 0; // object counter
   while ((cont=(AliAnalysisDataContainer*)next())) {
      TObject *data = cont->GetData();
      if (!data) continue;
      if (strcmp(cont->GetName(), GetName())) {
         cout << "Not merging containers with different names !" << endl;
         continue;
      }
      printf(" ... merging object %s\n", data->GetName());
      collectionData->Add(data);
      count++;
   }
   callEnv.SetParam((Long_t) collectionData);
   callEnv.Execute(fData);
   delete collectionData;

   return count+1;
}

//______________________________________________________________________________
void AliAnalysisDataContainer::PrintContainer(Option_t *option, Int_t indent) const
{
// Print info about this container.
   TString ind;
   for (Int_t i=0; i<indent; i++) ind += " ";
   TString opt(option);
   opt.ToLower();
   TString ctype = "Container";
   if (IsExchange()) ctype = "Exchange container";
   Bool_t dep = (opt.Contains("dep"))?kTRUE:kFALSE;
   if (!dep) {
      if (IsPostEventLoop()) printf("%s%s: %s     DATA TYPE: %s POST_LOOP task\n", ind.Data(), ctype.Data(), GetName(), GetTitle());
      else printf("%s%s: %s     DATA TYPE: %s\n", ind.Data(), ctype.Data(), GetName(), GetTitle());
      if (!fProducer) 
//         printf("%s = Data producer: task %s\n",ind.Data(),fProducer->GetName());
//      else
         printf("%s= Not connected to a data producer\n",ind.Data());
      if (fConsumers && fConsumers->GetEntriesFast())
         printf("%s = Client tasks indented below:\n", ind.Data());
   }
   if (!IsExchange()) {
      if (!fFolderName.IsNull())
        printf("%s = Filename: %s  folder: %s\n", ind.Data(),fFileName.Data(), fFolderName.Data());
      else
        if (!fFileName.IsNull()) printf("%s = Filename: %s\n", ind.Data(),fFileName.Data());
   }     
   ((AliAnalysisDataContainer*)this)->SetTouched(kTRUE);  
   TIter next(fConsumers);
   AliAnalysisTask *task;
   while ((task=(AliAnalysisTask*)next())) task->PrintTask(option, indent+3);
}   

//______________________________________________________________________________
Bool_t AliAnalysisDataContainer::SetData(TObject *data, Option_t *)
{
// Set the data as READY only if it was published by the producer.
   // If there is no producer declared, this is a top level container.
   AliAnalysisTask *task;
   Bool_t init = kFALSE;
   Int_t i, nc;
   if (!fProducer) {
      if (data != fData) init = kTRUE;
      fData = data;
      fDataReady = kTRUE;
      if (fConsumers) {
         nc = fConsumers->GetEntriesFast();
         for (i=0; i<nc; i++) {
            task = (AliAnalysisTask*)fConsumers->At(i);
            task->CheckNotify(init);
         }
      }      
      return kTRUE;
   }
   // Check if it is the producer who published the data     
   if (fProducer->GetPublishedData()==data) {
      fData = data;
      fDataReady = kTRUE;
      if (fConsumers) {
         nc = fConsumers->GetEntriesFast();
         for (i=0; i<nc; i++) {
            task = (AliAnalysisTask*)fConsumers->At(i);
            task->CheckNotify();
         }
      }      
      return kTRUE;   
   } else {
     // Ignore data posting from other than the producer
//      cout<<"Data for container "<<GetName()<<" can be published only by producer task "<<fProducer->GetName()<<endl;
      //AliWarning(Form("Data for container %s can be published only by producer task %s", GetName(), fProducer->GetName()));   
      return kFALSE;           
   }              
}

//______________________________________________________________________________
void AliAnalysisDataContainer::SetFileName(const char *filename)
{
// The filename field can be actually composed by the actual file name followed
// by :dirname (optional):
// filename = file_name[:dirname]
// No slashes (/) allowed
  fFileName = filename;
  fFolderName = "";
  Int_t index = fFileName.Index(":");
  // Fill the folder name
  if (index >= 0) {
    fFolderName = fFileName(index+1, fFileName.Length()-index);
    fFileName.Remove(index);
  }  
  if (!fFileName.Length())
    Fatal("SetFileName", "Empty file name");   
  if (fFileName.Index("/")>=0)
    Fatal("SetFileName", "No slashes (/) allowed in the file name");   
}

//______________________________________________________________________________
void AliAnalysisDataContainer::SetProducer(AliAnalysisTask *prod, Int_t islot)
{
// Set the producer of data. The slot number is required for data type checking.
   if (fProducer) {
     cout<<"Data container "<<GetName()<<" already has a producer: "<<fProducer->GetName()<<endl;
     //AliWarning(Form("Data container %s already has a producer: %s",GetName(),fProducer->GetName()));
   } 
   if (fDataReady) {
     cout<<GetName()<<" container contains data - cannot change producer!"<<endl;
     //AliError(Form("%s container contains data - cannot change producer!", GetName()));
      return;
   }   
   AliAnalysisDataSlot *slot = prod->GetOutputSlot(islot);
   if (!slot) {
     cout<<"Producer task "<<prod->GetName()<<" does not have an output #"<<islot<<endl;
     //AliError(Form("Producer task %s does not have an output #%i", prod->GetName(),islot));
      return;
   }   
   if (!slot->GetType()->InheritsFrom(GetType())) {
     cout<<"Data type "<<slot->GetTitle()<<"for output slot "<<islot<<" of task "<<prod->GetName()<<" does not match container type "<<GetTitle()<<endl;
     //AliError(Form("Data type %s for output slot %i of task %s does not match container type %s", slot->GetType()->GetName(),islot,prod->GetName(),fType->GetName()));
      return;
   }   
   
   fProducer = prod;
   // Add all consumers as daughter tasks
   TIter next(fConsumers);
   AliAnalysisTask *cons;
   while ((cons=(AliAnalysisTask*)next())) {
      if (!prod->GetListOfTasks()->FindObject(cons)) prod->Add(cons);
   }   
}   

//______________________________________________________________________________
AliAnalysisDataWrapper *AliAnalysisDataContainer::ExportData() const
{
// Wraps data for sending it through the net.
   AliAnalysisDataWrapper *pack = 0;
   if (!fData) {
      Error("ExportData", "Container %s - No data to be wrapped !", GetName());
      return pack;
   } 
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (mgr && mgr->GetDebugLevel() > 1) printf("   ExportData: Wrapping data %s for container %s\n", fData->GetName(),GetName());
   pack = new AliAnalysisDataWrapper(fData);
   pack->SetName(fName.Data());
   return pack;
}

//______________________________________________________________________________
void AliAnalysisDataContainer::ImportData(AliAnalysisDataWrapper *pack)
{
// Unwraps data from a data wrapper.
   if (pack) {
      fData = pack->Data();
      if (!fData) {
         Error("ImportData", "No data was wrapped for container %s", GetName());
         return;
      }   
      AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
      if (mgr && mgr->GetDebugLevel() > 1) printf("   ImportData: Unwrapping data %s for container %s\n", fData->GetName(),GetName());
      fDataReady = kTRUE;
      // Imported wrappers do not own data anymore (AG 13-11-07)
      pack->SetDeleteData(kFALSE);
   }   
}      
      
ClassImp (AliAnalysisDataWrapper)

//______________________________________________________________________________
AliAnalysisDataWrapper::AliAnalysisDataWrapper(TObject *data)
                       :TNamed(),
                        fData(data)
{
// Ctor.
   if (data) SetName(data->GetName());
}

//______________________________________________________________________________
AliAnalysisDataWrapper::~AliAnalysisDataWrapper()
{
// Dtor.
   if (fData && TObject::TestBit(kDeleteData)) delete fData;
}   

//______________________________________________________________________________
AliAnalysisDataWrapper &AliAnalysisDataWrapper::operator=(const AliAnalysisDataWrapper &other)
{
// Assignment.
   if (&other != this) {
      TNamed::operator=(other);
      fData = other.fData;
   }   
   return *this;
}

//______________________________________________________________________________
Long64_t AliAnalysisDataWrapper::Merge(TCollection *list)
{
// Merge a list of containers with this one. Containers in the list must have
// data of the same type.
   if (TH1::AddDirectoryStatus()) TH1::AddDirectory(kFALSE);
   if (!fData) return 0;
   if (!list || list->IsEmpty()) return 1;

   SetDeleteData();

   TMethodCall callEnv;
   if (fData->IsA())
      callEnv.InitWithPrototype(fData->IsA(), "Merge", "TCollection*");
   if (!callEnv.IsValid()) {
      cout << "No merge interface for data stored by " << GetName() << ". Merging not possible !" << endl;
      return 1;
   }

   TIter next1(list);
   AliAnalysisDataWrapper *cont;
   // Make a list where to temporary store the data to be merged.
   TList *collectionData = new TList();
   Int_t count = 0; // object counter
   // printf("Wrapper %s 0x%lx (data=%s) merged with:\n", GetName(), (ULong_t)this, fData->ClassName());
   while ((cont=(AliAnalysisDataWrapper*)next1())) {
      cont->SetDeleteData();
      TObject *data = cont->Data();
      if (!data) continue;
      // printf("   - %s 0x%lx (data=%s)\n", cont->GetName(), (ULong_t)cont, data->ClassName());
      collectionData->Add(data);
      count++;
   }
   callEnv.SetParam((Long_t) collectionData);
   callEnv.Execute(fData);
   delete collectionData;

   return count+1;
}

ClassImp(AliAnalysisFileDescriptor)

//______________________________________________________________________________
AliAnalysisFileDescriptor::AliAnalysisFileDescriptor()
                          :TObject(), fLfn(), fGUID(), fUrl(), fPfn(), fSE(),
                           fIsArchive(kFALSE), fImage(0), fNreplicas(0), 
                           fStartBytes(0), fReadBytes(0), fSize(0), fOpenedAt(0), 
                           fOpenTime(0.), fProcessingTime(0.), fThroughput(0.), fTimer()
{
// I/O constructor
}

//______________________________________________________________________________
AliAnalysisFileDescriptor::AliAnalysisFileDescriptor(const TFile *file)
                          :TObject(), fLfn(), fGUID(), fUrl(), fPfn(), fSE(),
                           fIsArchive(kFALSE), fImage(0), fNreplicas(0), 
                           fStartBytes(0), fReadBytes(0), fSize(0), fOpenedAt(0), 
                           fOpenTime(0.), fProcessingTime(0.), fThroughput(0.), fTimer()
{
// Normal constructor
   if (file->InheritsFrom("TAlienFile")) {
      fLfn =(const char*)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetLfn();", file));
      fGUID =(const char*)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetGUID();", file));
      fUrl =(const char*)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetUrl();", file));
      fPfn =(const char*)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetPfn();", file));
      fSE = (const char*)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetSE();", file));
      fImage = (Int_t)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetImage();", file));
      fNreplicas = (Int_t)gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetNreplicas();", file));
      fOpenedAt = gROOT->ProcessLine(Form("((TAlienFile*)%p)->GetOpenTime();", file));
      gROOT->ProcessLine(Form("((AliAnalysisFileDescriptor*)%p)->SetOpenTime(((TAlienFile*)%p)->GetElapsed());", this, file));
   } else {
      fLfn = file->GetName();
      fPfn = file->GetName();
      fUrl = file->GetName();
      fSE = "local";
      if (!fPfn.BeginsWith("/")) fPfn.Prepend(Form("%s/",gSystem->WorkingDirectory()));
      fOpenedAt = time(0);
   }
   fStartBytes = TFile::GetFileBytesRead();
   fIsArchive = file->IsArchive();
   fSize = file->GetSize();
}

//______________________________________________________________________________
AliAnalysisFileDescriptor::AliAnalysisFileDescriptor(const AliAnalysisFileDescriptor &other)
                          :TObject(other), fLfn(other.fLfn), fGUID(other.fGUID),
                           fUrl(other.fUrl), fPfn(other.fPfn), fSE(other.fSE),
                           fIsArchive(other.fIsArchive), fImage(other.fImage),
                           fNreplicas(other.fNreplicas), fStartBytes(other.fStartBytes), fReadBytes(other.fReadBytes),
                           fSize(other.fSize), fOpenedAt(other.fOpenedAt), fOpenTime(other.fOpenTime),
                           fProcessingTime(other.fProcessingTime), fThroughput(other.fThroughput), fTimer()
{
// CC
}

//______________________________________________________________________________
AliAnalysisFileDescriptor &AliAnalysisFileDescriptor::operator=(const AliAnalysisFileDescriptor &other)
{
// Assignment.
   if (&other == this) return *this;
   TObject::operator=(other);
   fLfn       = other.fLfn;
   fGUID      = other.fGUID;
   fUrl       = other.fUrl; 
   fPfn       = other.fPfn;
   fSE        = other.fSE;
   fIsArchive = other.fIsArchive;
   fImage     = other.fImage;
   fNreplicas = other.fNreplicas;
   fStartBytes = other.fStartBytes;;
   fReadBytes = other.fReadBytes;
   fSize      = other.fSize;
   fOpenedAt  = other.fOpenedAt;
   fOpenTime  = other.fOpenTime;
   fProcessingTime = other.fProcessingTime;
   fThroughput = other.fThroughput;
   return *this;
}

//______________________________________________________________________________
AliAnalysisFileDescriptor::~AliAnalysisFileDescriptor()
{
// Destructor
}

//______________________________________________________________________________
void AliAnalysisFileDescriptor::Done()
{
// Must be called at the end of processing, providing file->GetBytesRead() as argument.
   fTimer.Stop();
   const Double_t megabyte = 1048576.;
//   Long64_t stampnow = time(0);
   fReadBytes = TFile::GetFileBytesRead()-fStartBytes;
//   fProcessingTime = stampnow-fOpenedAt;
   fProcessingTime = fTimer.RealTime();
   Double_t readsize = fReadBytes/megabyte;
   fThroughput = readsize/fProcessingTime;
}   

//______________________________________________________________________________
void AliAnalysisFileDescriptor::Print(Option_t*) const
{
// Print info about the file descriptor
   const Double_t megabyte = 1048576.;
   printf("===== Logical file name: %s =====\n", fLfn.Data());
   printf("      Pfn: %s\n", fPfn.Data());
   printf("      url: %s\n", fUrl.Data());
   printf("      access time: %lld from SE: %s  image %d/%d\n", fOpenedAt, fSE.Data(), fImage, fNreplicas);
   printf("      open time: %g [sec]\n", fOpenTime);
   printf("      file size: %g [MB],  read size: %g [MB]\n", fSize/megabyte, fReadBytes/megabyte);
   printf("      processing time [sec]: %g\n", fProcessingTime);
   printf("      average throughput: %g [MB/sec]\n", fThroughput);
}

//______________________________________________________________________________
void AliAnalysisFileDescriptor::SavePrimitive(std::ostream &out, Option_t *)
{
// Stream info to file
   const Double_t megabyte = 1048576.;
   out << "#################################################################" << endl;
   out << "pfn          " << fPfn.Data() << endl;
   out << "url          " << fUrl.Data() << endl;
   out << "se           " << fSE.Data() << endl;
   out << "image        " << fImage << endl;
   out << "nreplicas    " << fNreplicas << endl;
   out << "openstamp    " << fOpenedAt << endl;
   std::ios_base::fmtflags original_flags = out.flags();
   out << setiosflags(std::ios::fixed) << std::setprecision(3);
   out << "opentime     " << fOpenTime << endl;
   out << "runtime      " << fProcessingTime << endl;
   out << "filesize     " << fSize/megabyte << endl;
   out << "readsize     " << fReadBytes/megabyte << endl;
   out << "throughput   " << fThroughput << endl;
   out.flags(original_flags);
}

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