#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)
{
}
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)
{
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)
{
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()
{
if (fData && fOwnedData) delete fData;
if (fConsumers) delete fConsumers;
}
AliAnalysisDataContainer &AliAnalysisDataContainer::operator=(const AliAnalysisDataContainer &cont)
{
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)
{
AliAnalysisDataSlot *slot = consumer->GetInputSlot(islot);
if (!slot || !slot->GetType()) {
cout<<"Consumer task "<< consumer->GetName()<<" does not have an input/type #"<<islot<<endl;
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;
return;
}
if (!fConsumers) fConsumers = new TObjArray(2);
fConsumers->Add(consumer);
if (fProducer && !fProducer->GetListOfTasks()->FindObject(consumer))
fProducer->Add(consumer);
}
Bool_t AliAnalysisDataContainer::ClientsExecuted() const
{
TIter next(fConsumers);
AliAnalysisTask *task;
while ((task=(AliAnalysisTask*)next())) {
if (!task->HasExecuted()) return kFALSE;
}
return kTRUE;
}
void AliAnalysisDataContainer::DeleteData()
{
if (!fDataReady || !ClientsExecuted()) {
cout<<"Data not ready or not all clients of container "<<GetName()<<" executed. Data not deleted."<<endl;
return;
}
if (!fOwnedData) {
cout<<"Data not owned by container "<<GetName()<<". Not deleted."<<endl;
return;
}
delete fData;
fData = 0;
fDataReady = kFALSE;
}
TClass *AliAnalysisDataContainer::GetType() const
{
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 (!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)
{
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;
TList *collectionData = new TList();
Int_t count = 0;
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
{
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= 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 *)
{
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;
}
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 {
return kFALSE;
}
}
void AliAnalysisDataContainer::SetFileName(const char *filename)
{
fFileName = filename;
fFolderName = "";
Int_t index = fFileName.Index(":");
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)
{
if (fProducer) {
cout<<"Data container "<<GetName()<<" already has a producer: "<<fProducer->GetName()<<endl;
}
if (fDataReady) {
cout<<GetName()<<" container contains data - cannot change producer!"<<endl;
return;
}
AliAnalysisDataSlot *slot = prod->GetOutputSlot(islot);
if (!slot) {
cout<<"Producer task "<<prod->GetName()<<" does not have an output #"<<islot<<endl;
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;
return;
}
fProducer = prod;
TIter next(fConsumers);
AliAnalysisTask *cons;
while ((cons=(AliAnalysisTask*)next())) {
if (!prod->GetListOfTasks()->FindObject(cons)) prod->Add(cons);
}
}
AliAnalysisDataWrapper *AliAnalysisDataContainer::ExportData() const
{
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)
{
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;
pack->SetDeleteData(kFALSE);
}
}
ClassImp (AliAnalysisDataWrapper)
AliAnalysisDataWrapper::AliAnalysisDataWrapper(TObject *data)
:TNamed(),
fData(data)
{
if (data) SetName(data->GetName());
}
AliAnalysisDataWrapper::~AliAnalysisDataWrapper()
{
if (fData && TObject::TestBit(kDeleteData)) delete fData;
}
AliAnalysisDataWrapper &AliAnalysisDataWrapper::operator=(const AliAnalysisDataWrapper &other)
{
if (&other != this) {
TNamed::operator=(other);
fData = other.fData;
}
return *this;
}
Long64_t AliAnalysisDataWrapper::Merge(TCollection *list)
{
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;
TList *collectionData = new TList();
Int_t count = 0;
while ((cont=(AliAnalysisDataWrapper*)next1())) {
cont->SetDeleteData();
TObject *data = cont->Data();
if (!data) continue;
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()
{
}
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()
{
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()
{
}
AliAnalysisFileDescriptor &AliAnalysisFileDescriptor::operator=(const AliAnalysisFileDescriptor &other)
{
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()
{
}
void AliAnalysisFileDescriptor::Done()
{
fTimer.Stop();
const Double_t megabyte = 1048576.;
fReadBytes = TFile::GetFileBytesRead()-fStartBytes;
fProcessingTime = fTimer.RealTime();
Double_t readsize = fReadBytes/megabyte;
fThroughput = readsize/fProcessingTime;
}
void AliAnalysisFileDescriptor::Print(Option_t*) const
{
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 *)
{
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