#include "AliHistoListWrapper.h"
#include "TH2F.h"
#include "TList.h"
#include "AliLog.h"
#include "TString.h"
#include "AliESDInputHandlerRP.h"
#include "AliAnalysisManager.h"
#include "TTree.h"
#include "AliMultiplicity.h"
ClassImp(AliHistoListWrapper)
AliHistoListWrapper::AliHistoListWrapper():
TNamed(), fList(0)
{
fList = new TList();
fList->SetOwner();
}
AliHistoListWrapper::AliHistoListWrapper(const char* name, const char* title):
TNamed(name,title), fList(0)
{
fList = new TList();
fList->SetOwner();
}
AliHistoListWrapper::AliHistoListWrapper(const AliHistoListWrapper& obj) :
TNamed(obj),
fList(0)
{
fList = obj.fList;
}
AliHistoListWrapper::~AliHistoListWrapper() {
if(fList) {
delete fList;
fList = 0;
}
}
Long64_t AliHistoListWrapper::Merge(TCollection* list)
{
if (!list)
return 0;
if (list->IsEmpty())
return 1;
TIterator* iter = list->MakeIterator();
TObject* obj;
TList collections;
Int_t count = 0;
while ((obj = iter->Next())) {
Bool_t foundDiffinThisIterStep = kFALSE;
AliHistoListWrapper* entry = dynamic_cast<AliHistoListWrapper*> (obj);
if (entry == 0)
continue;
TList * hlist = entry->fList;
Bool_t areListsDifferent=kTRUE;
Int_t iloop = 0;
Int_t max_loops = hlist->GetSize() + fList->GetSize();
while(areListsDifferent) {
if(iloop>max_loops) AliFatal("Infinite Loop?");
iloop++;
hlist->Sort();
fList->Sort();
TObject * hist =0;
TIterator * iterlist = 0;
TList * thislist = 0;
TList * otherlist = 0;
if (hlist->GetSize() >= fList->GetSize()) {
thislist = hlist;
otherlist = fList;
}
else{
thislist = fList;
otherlist = hlist;
}
iterlist = thislist->MakeIterator();
while ((hist= iterlist->Next())){
if(!otherlist->FindObject(hist->GetName())){
AliInfo(Form("Adding object %s",hist->GetName()));
TH1 * hclone = (TH1*) hist->Clone();
if (!hclone->InheritsFrom("TH1")) AliFatal(Form("Found a %s. This class only supports objects inheriting from TH1",hclone->ClassName()));
hclone->Reset();
otherlist->Add(hclone);
foundDiffinThisIterStep=kTRUE;
}
}
hlist->Sort();
fList->Sort();
areListsDifferent=kFALSE;
if (hlist->GetSize() == fList->GetSize()) {
Int_t nhist = fList->GetSize();
for(Int_t ihist = 0; ihist < nhist; ihist++){
if(strcmp(fList->At(ihist)->GetName(),hlist->At(ihist)->GetName())) areListsDifferent = kTRUE;
}
} else {
areListsDifferent=kTRUE;
}
}
if (hlist->GetSize() != fList->GetSize()) {
AliFatal("Mismatching size!");
}
Int_t nhist = fList->GetSize();
for(Int_t ihist = 0; ihist < nhist; ihist++){
if(strcmp(fList->At(ihist)->GetName(),hlist->At(ihist)->GetName())){
AliFatal(Form("Mismatching histos: %s -> %s", fList->At(ihist)->GetName(),hlist->At(ihist)->GetName()));
}
}
if (foundDiffinThisIterStep){
iter->Reset();
collections.Clear();
count = 0;
}
else {
collections.Add(hlist);
count++;
}
}
fList->Merge(&collections);
delete iter;
return count+1;
}
AliHistoListWrapper& AliHistoListWrapper::operator=(const AliHistoListWrapper& wrap) {
if(this!=&wrap) {
fList = new TList();
fList->SetOwner();
TIterator* iter = wrap.fList->MakeIterator();
TObject* obj;
while ((obj = iter->Next())) {
fList->Add(obj->Clone());
}
}
return *this;
}
AliHistoListWrapper.cxx:1 AliHistoListWrapper.cxx:2 AliHistoListWrapper.cxx:3 AliHistoListWrapper.cxx:4 AliHistoListWrapper.cxx:5 AliHistoListWrapper.cxx:6 AliHistoListWrapper.cxx:7 AliHistoListWrapper.cxx:8 AliHistoListWrapper.cxx:9 AliHistoListWrapper.cxx:10 AliHistoListWrapper.cxx:11 AliHistoListWrapper.cxx:12 AliHistoListWrapper.cxx:13 AliHistoListWrapper.cxx:14 AliHistoListWrapper.cxx:15 AliHistoListWrapper.cxx:16 AliHistoListWrapper.cxx:17 AliHistoListWrapper.cxx:18 AliHistoListWrapper.cxx:19 AliHistoListWrapper.cxx:20 AliHistoListWrapper.cxx:21 AliHistoListWrapper.cxx:22 AliHistoListWrapper.cxx:23 AliHistoListWrapper.cxx:24 AliHistoListWrapper.cxx:25 AliHistoListWrapper.cxx:26 AliHistoListWrapper.cxx:27 AliHistoListWrapper.cxx:28 AliHistoListWrapper.cxx:29 AliHistoListWrapper.cxx:30 AliHistoListWrapper.cxx:31 AliHistoListWrapper.cxx:32 AliHistoListWrapper.cxx:33 AliHistoListWrapper.cxx:34 AliHistoListWrapper.cxx:35 AliHistoListWrapper.cxx:36 AliHistoListWrapper.cxx:37 AliHistoListWrapper.cxx:38 AliHistoListWrapper.cxx:39 AliHistoListWrapper.cxx:40 AliHistoListWrapper.cxx:41 AliHistoListWrapper.cxx:42 AliHistoListWrapper.cxx:43 AliHistoListWrapper.cxx:44 AliHistoListWrapper.cxx:45 AliHistoListWrapper.cxx:46 AliHistoListWrapper.cxx:47 AliHistoListWrapper.cxx:48 AliHistoListWrapper.cxx:49 AliHistoListWrapper.cxx:50 AliHistoListWrapper.cxx:51 AliHistoListWrapper.cxx:52 AliHistoListWrapper.cxx:53 AliHistoListWrapper.cxx:54 AliHistoListWrapper.cxx:55 AliHistoListWrapper.cxx:56 AliHistoListWrapper.cxx:57 AliHistoListWrapper.cxx:58 AliHistoListWrapper.cxx:59 AliHistoListWrapper.cxx:60 AliHistoListWrapper.cxx:61 AliHistoListWrapper.cxx:62 AliHistoListWrapper.cxx:63 AliHistoListWrapper.cxx:64 AliHistoListWrapper.cxx:65 AliHistoListWrapper.cxx:66 AliHistoListWrapper.cxx:67 AliHistoListWrapper.cxx:68 AliHistoListWrapper.cxx:69 AliHistoListWrapper.cxx:70 AliHistoListWrapper.cxx:71 AliHistoListWrapper.cxx:72 AliHistoListWrapper.cxx:73 AliHistoListWrapper.cxx:74 AliHistoListWrapper.cxx:75 AliHistoListWrapper.cxx:76 AliHistoListWrapper.cxx:77 AliHistoListWrapper.cxx:78 AliHistoListWrapper.cxx:79 AliHistoListWrapper.cxx:80 AliHistoListWrapper.cxx:81 AliHistoListWrapper.cxx:82 AliHistoListWrapper.cxx:83 AliHistoListWrapper.cxx:84 AliHistoListWrapper.cxx:85 AliHistoListWrapper.cxx:86 AliHistoListWrapper.cxx:87 AliHistoListWrapper.cxx:88 AliHistoListWrapper.cxx:89 AliHistoListWrapper.cxx:90 AliHistoListWrapper.cxx:91 AliHistoListWrapper.cxx:92 AliHistoListWrapper.cxx:93 AliHistoListWrapper.cxx:94 AliHistoListWrapper.cxx:95 AliHistoListWrapper.cxx:96 AliHistoListWrapper.cxx:97 AliHistoListWrapper.cxx:98 AliHistoListWrapper.cxx:99 AliHistoListWrapper.cxx:100 AliHistoListWrapper.cxx:101 AliHistoListWrapper.cxx:102 AliHistoListWrapper.cxx:103 AliHistoListWrapper.cxx:104 AliHistoListWrapper.cxx:105 AliHistoListWrapper.cxx:106 AliHistoListWrapper.cxx:107 AliHistoListWrapper.cxx:108 AliHistoListWrapper.cxx:109 AliHistoListWrapper.cxx:110 AliHistoListWrapper.cxx:111 AliHistoListWrapper.cxx:112 AliHistoListWrapper.cxx:113 AliHistoListWrapper.cxx:114 AliHistoListWrapper.cxx:115 AliHistoListWrapper.cxx:116 AliHistoListWrapper.cxx:117 AliHistoListWrapper.cxx:118 AliHistoListWrapper.cxx:119 AliHistoListWrapper.cxx:120 AliHistoListWrapper.cxx:121 AliHistoListWrapper.cxx:122 AliHistoListWrapper.cxx:123 AliHistoListWrapper.cxx:124 AliHistoListWrapper.cxx:125 AliHistoListWrapper.cxx:126 AliHistoListWrapper.cxx:127 AliHistoListWrapper.cxx:128 AliHistoListWrapper.cxx:129 AliHistoListWrapper.cxx:130 AliHistoListWrapper.cxx:131 AliHistoListWrapper.cxx:132 AliHistoListWrapper.cxx:133 AliHistoListWrapper.cxx:134 AliHistoListWrapper.cxx:135 AliHistoListWrapper.cxx:136 AliHistoListWrapper.cxx:137 AliHistoListWrapper.cxx:138 AliHistoListWrapper.cxx:139 AliHistoListWrapper.cxx:140 AliHistoListWrapper.cxx:141 AliHistoListWrapper.cxx:142 AliHistoListWrapper.cxx:143 AliHistoListWrapper.cxx:144 AliHistoListWrapper.cxx:145 AliHistoListWrapper.cxx:146 AliHistoListWrapper.cxx:147 AliHistoListWrapper.cxx:148 AliHistoListWrapper.cxx:149 AliHistoListWrapper.cxx:150 AliHistoListWrapper.cxx:151 AliHistoListWrapper.cxx:152 AliHistoListWrapper.cxx:153 AliHistoListWrapper.cxx:154 AliHistoListWrapper.cxx:155 AliHistoListWrapper.cxx:156 AliHistoListWrapper.cxx:157 AliHistoListWrapper.cxx:158 AliHistoListWrapper.cxx:159 AliHistoListWrapper.cxx:160 AliHistoListWrapper.cxx:161 AliHistoListWrapper.cxx:162 AliHistoListWrapper.cxx:163 AliHistoListWrapper.cxx:164 AliHistoListWrapper.cxx:165 AliHistoListWrapper.cxx:166 AliHistoListWrapper.cxx:167 AliHistoListWrapper.cxx:168 AliHistoListWrapper.cxx:169 AliHistoListWrapper.cxx:170 AliHistoListWrapper.cxx:171 AliHistoListWrapper.cxx:172 AliHistoListWrapper.cxx:173 AliHistoListWrapper.cxx:174 AliHistoListWrapper.cxx:175 AliHistoListWrapper.cxx:176 AliHistoListWrapper.cxx:177 AliHistoListWrapper.cxx:178 AliHistoListWrapper.cxx:179 AliHistoListWrapper.cxx:180 AliHistoListWrapper.cxx:181 AliHistoListWrapper.cxx:182 AliHistoListWrapper.cxx:183 AliHistoListWrapper.cxx:184 AliHistoListWrapper.cxx:185 AliHistoListWrapper.cxx:186 AliHistoListWrapper.cxx:187 AliHistoListWrapper.cxx:188 AliHistoListWrapper.cxx:189 AliHistoListWrapper.cxx:190