#include <cstring>
#include <vector>
#include <TArrayD.h>
#include <TAxis.h>
#include <TH1.h>
#include <TH2.h>
#include <TH3.h>
#include <THnSparse.h>
#include <THashList.h>
#include <TObjArray.h>
#include <TObjString.h>
#include "AliEMCalHistoContainer.h"
#include <TString.h>
#include "AliLog.h"
ClassImp(EMCalTriggerPtAnalysis::AliEMCalHistoContainer)
namespace EMCalTriggerPtAnalysis {
AliEMCalHistoContainer::AliEMCalHistoContainer():
TNamed(),
fHistos(NULL),
fIsOwner(true)
{
}
AliEMCalHistoContainer::AliEMCalHistoContainer(const char *name):
TNamed(name, Form("Histogram container %s", name)),
fHistos(NULL),
fIsOwner(true)
{
fHistos = new THashList();
fHistos->SetName(Form("histos%s", name));
fHistos->SetOwner();
}
AliEMCalHistoContainer::~AliEMCalHistoContainer(){
if(fHistos && fIsOwner) delete fHistos;
}
void AliEMCalHistoContainer::CreateHistoGroup(const char *groupname, const char *parent) throw(HistoContainerContentException) {
THashList *parentgroup = FindGroup(parent);
if(!parentgroup) throw HistoContainerContentException(NULL, parent, HistoContainerContentException::kGroupException);
THashList *childgroup = new THashList();
childgroup->SetName(groupname);
parentgroup->Add(childgroup);
}
void AliEMCalHistoContainer::CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH1 *hist = new TH1D(hname.Data(), title, nbins, xmin, xmax);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH1(const char *name, const char *title, int nbins, const double *xbins, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname, dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH1 *hist = new TH1D(hname.Data(), title, nbins, xbins);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH1(const char *name, const char *title, const TArrayD &xbins, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH1 *hist = new TH1D(hname.Data(), title, xbins.GetSize()-1, xbins.GetArray());
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH2(const char *name, const char *title,
int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH2 *hist = new TH2D(hname.Data(), title, nbinsx, xmin, xmax, nbinsy, ymin, ymax);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH2(const char *name, const char *title,
int nbinsx, const double *xbins, int nbinsy, const double *ybins, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH2 *hist = new TH2D(hname.Data(), title, nbinsx, xbins, nbinsy, ybins);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH2(const char *name, const char *title, const TArrayD &xbins, const TArrayD &ybins, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH2 *hist = new TH2D(hname.Data(), title, xbins.GetSize() - 1, xbins.GetArray(), ybins.GetSize() - 1, ybins.GetArray());
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH3(const char* name, const char* title, int nbinsx, double xmin, double xmax,
int nbinsy, double ymin, double ymax, int nbinsz, double zmin, double zmax, Option_t *opt) throw (HistoContainerContentException) {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH3 *hist = new TH3D(hname.Data(), title, nbinsx, xmin, xmax, nbinsy, ymin, ymax, nbinsz, zmin, zmax);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH3(const char* name, const char* title, int nbinsx, const double* xbins,
int nbinsy, const double* ybins, int nbinsz, const double* zbins, Option_t *opt) throw (HistoContainerContentException) {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH3 *hist = new TH3D(hname.Data(), title, nbinsx, xbins, nbinsy, ybins, nbinsz, zbins);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTH3(const char* name, const char* title, const TArrayD& xbins, const TArrayD& ybins,
const TArrayD& zbins, Option_t *opt) throw (HistoContainerContentException) {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TH3 *hist = new TH3D(hname.Data(), title, xbins.GetSize()-1, xbins.GetArray(), ybins.GetSize()-1, ybins.GetArray(), zbins.GetSize()-1, zbins.GetArray());
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTHnSparse(const char *name, const char *title,
int ndim, const int *nbins, const double *min, const double *max, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname.Data()))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
THnSparseD *hist = new THnSparseD(hname.Data(), title, ndim, nbins, min, max);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hist->Sumw2();
parent->Add(hist);
}
void AliEMCalHistoContainer::CreateTHnSparse(const char *name, const char *title, int ndim, const TAxis **axes, Option_t *opt) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
if(parent->FindObject(hname))
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistDuplicationException);
TArrayD xmin(ndim), xmax(ndim);
TArrayI nbins(ndim);
for(int idim = 0; idim < ndim; ++idim){
const TAxis &myaxis = *(axes[idim]);
nbins[idim] = myaxis.GetNbins();
xmin[idim] = myaxis.GetXmin();
xmax[idim] = myaxis.GetXmax();
}
THnSparseD *hsparse = new THnSparseD(hname.Data(), title, ndim, nbins.GetArray(), xmin.GetArray(), xmax.GetArray());
for(int id = 0; id < ndim; ++id)
*(hsparse->GetAxis(id)) = *(axes[id]);
TString optionstring(opt);
optionstring.ToLower();
if(optionstring.Contains("s"))
hsparse->Sumw2();
parent->Add(hsparse);
}
void AliEMCalHistoContainer::SetObject(TObject * const o, const char *group) throw(HistoContainerContentException){
THashList *parent(FindGroup(group));
if(!parent)
throw HistoContainerContentException(NULL, strcmp(group, "/") ? group : "", HistoContainerContentException::kGroupException);
if(parent->FindObject(o->GetName()))
throw HistoContainerContentException(o->GetName(), strcmp(group, "/") ? group : "", HistoContainerContentException::kHistDuplicationException);
if(!(dynamic_cast<THnBase *>(o) || dynamic_cast<TH1 *>(o)))
throw HistoContainerContentException(o->GetName(), strcmp(group, "/") ? group : "", HistoContainerContentException::kTypeException);
fHistos->Add(o);
}
void AliEMCalHistoContainer::FillTH1(const char *name, double x, double weight) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
TH1 *hist = dynamic_cast<TH1 *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(x, weight);
}
void AliEMCalHistoContainer::FillTH2(const char *name, double x, double y, double weight) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
TH2 *hist = dynamic_cast<TH2 *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(x, y, weight);
}
void AliEMCalHistoContainer::FillTH2(const char *name, double *point, double weight) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
TH2 *hist = dynamic_cast<TH2 *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(point[0], point[1], weight);
}
void AliEMCalHistoContainer::FillTH3(const char* name, double x, double y, double z, double weight) throw (HistoContainerContentException) {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
TH3 *hist = dynamic_cast<TH3 *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(x, y, z, weight);
}
void AliEMCalHistoContainer::FillTH3(const char* name, const double* point, double weight) throw (HistoContainerContentException) {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
TH3 *hist = dynamic_cast<TH3 *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(point[0], point[1], point[2], weight);
}
void AliEMCalHistoContainer::FillTHnSparse(const char *name, const double *x, double weight) throw(HistoContainerContentException){
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent)
throw HistoContainerContentException(NULL, dirname.Data(), HistoContainerContentException::kGroupException);
THnSparseD *hist = dynamic_cast<THnSparseD *>(parent->FindObject(hname.Data()));
if(!hist)
throw HistoContainerContentException(hname.Data(), dirname.Data(), HistoContainerContentException::kHistNotFoundException);
hist->Fill(x, weight);
}
TObject *AliEMCalHistoContainer::FindObject(const char *name) const {
TString dirname(basename(name)), hname(histname(name));
THashList *parent(FindGroup(dirname.Data()));
if(!parent) return NULL;
return parent->FindObject(hname);
}
TObject* AliEMCalHistoContainer::FindObject(const TObject* obj) const {
TString dirname(basename(obj->GetName())), hname(histname(obj->GetName()));
THashList *parent(FindGroup(dirname.Data()));
if(!parent) return NULL;
return parent->FindObject(hname);
}
THashList *AliEMCalHistoContainer::FindGroup(const char *dirname) const {
if(!strlen(dirname) || !strcmp(dirname, "/")) return fHistos;
std::vector<std::string> tokens;
TokenizeFilename(dirname, "/", tokens);
THashList *currentdir(fHistos);
for(std::vector<std::string>::iterator it = tokens.begin(); it != tokens.end(); ++it){
currentdir = dynamic_cast<THashList *>(currentdir->FindObject(it->c_str()));
if(!currentdir) break;
}
return currentdir;
}
void AliEMCalHistoContainer::TokenizeFilename(const char *name, const char *delim, std::vector<std::string> &listoftokens) const {
TString s(name);
TObjArray *arr = s.Tokenize(delim);
TObjString *ostr(NULL);
TIter toks(arr);
while((ostr = dynamic_cast<TObjString *>(toks()))){
listoftokens.push_back(std::string(ostr->String().Data()));
}
delete arr;
}
const char *AliEMCalHistoContainer::basename(const char *path) const {
TString s(path);
int index = s.Last('/');
if(index < 0) return "";
return TString(s(0, index)).Data();
}
const char *AliEMCalHistoContainer::histname(const char *path) const {
TString s(path);
int index = s.Last('/');
if(index < 0) return path;
return TString(s(index+1, s.Length() - (index+1))).Data();
}
}
AliEMCalHistoContainer.cxx:1 AliEMCalHistoContainer.cxx:2 AliEMCalHistoContainer.cxx:3 AliEMCalHistoContainer.cxx:4 AliEMCalHistoContainer.cxx:5 AliEMCalHistoContainer.cxx:6 AliEMCalHistoContainer.cxx:7 AliEMCalHistoContainer.cxx:8 AliEMCalHistoContainer.cxx:9 AliEMCalHistoContainer.cxx:10 AliEMCalHistoContainer.cxx:11 AliEMCalHistoContainer.cxx:12 AliEMCalHistoContainer.cxx:13 AliEMCalHistoContainer.cxx:14 AliEMCalHistoContainer.cxx:15 AliEMCalHistoContainer.cxx:16 AliEMCalHistoContainer.cxx:17 AliEMCalHistoContainer.cxx:18 AliEMCalHistoContainer.cxx:19 AliEMCalHistoContainer.cxx:20 AliEMCalHistoContainer.cxx:21 AliEMCalHistoContainer.cxx:22 AliEMCalHistoContainer.cxx:23 AliEMCalHistoContainer.cxx:24 AliEMCalHistoContainer.cxx:25 AliEMCalHistoContainer.cxx:26 AliEMCalHistoContainer.cxx:27 AliEMCalHistoContainer.cxx:28 AliEMCalHistoContainer.cxx:29 AliEMCalHistoContainer.cxx:30 AliEMCalHistoContainer.cxx:31 AliEMCalHistoContainer.cxx:32 AliEMCalHistoContainer.cxx:33 AliEMCalHistoContainer.cxx:34 AliEMCalHistoContainer.cxx:35 AliEMCalHistoContainer.cxx:36 AliEMCalHistoContainer.cxx:37 AliEMCalHistoContainer.cxx:38 AliEMCalHistoContainer.cxx:39 AliEMCalHistoContainer.cxx:40 AliEMCalHistoContainer.cxx:41 AliEMCalHistoContainer.cxx:42 AliEMCalHistoContainer.cxx:43 AliEMCalHistoContainer.cxx:44 AliEMCalHistoContainer.cxx:45 AliEMCalHistoContainer.cxx:46 AliEMCalHistoContainer.cxx:47 AliEMCalHistoContainer.cxx:48 AliEMCalHistoContainer.cxx:49 AliEMCalHistoContainer.cxx:50 AliEMCalHistoContainer.cxx:51 AliEMCalHistoContainer.cxx:52 AliEMCalHistoContainer.cxx:53 AliEMCalHistoContainer.cxx:54 AliEMCalHistoContainer.cxx:55 AliEMCalHistoContainer.cxx:56 AliEMCalHistoContainer.cxx:57 AliEMCalHistoContainer.cxx:58 AliEMCalHistoContainer.cxx:59 AliEMCalHistoContainer.cxx:60 AliEMCalHistoContainer.cxx:61 AliEMCalHistoContainer.cxx:62 AliEMCalHistoContainer.cxx:63 AliEMCalHistoContainer.cxx:64 AliEMCalHistoContainer.cxx:65 AliEMCalHistoContainer.cxx:66 AliEMCalHistoContainer.cxx:67 AliEMCalHistoContainer.cxx:68 AliEMCalHistoContainer.cxx:69 AliEMCalHistoContainer.cxx:70 AliEMCalHistoContainer.cxx:71 AliEMCalHistoContainer.cxx:72 AliEMCalHistoContainer.cxx:73 AliEMCalHistoContainer.cxx:74 AliEMCalHistoContainer.cxx:75 AliEMCalHistoContainer.cxx:76 AliEMCalHistoContainer.cxx:77 AliEMCalHistoContainer.cxx:78 AliEMCalHistoContainer.cxx:79 AliEMCalHistoContainer.cxx:80 AliEMCalHistoContainer.cxx:81 AliEMCalHistoContainer.cxx:82 AliEMCalHistoContainer.cxx:83 AliEMCalHistoContainer.cxx:84 AliEMCalHistoContainer.cxx:85 AliEMCalHistoContainer.cxx:86 AliEMCalHistoContainer.cxx:87 AliEMCalHistoContainer.cxx:88 AliEMCalHistoContainer.cxx:89 AliEMCalHistoContainer.cxx:90 AliEMCalHistoContainer.cxx:91 AliEMCalHistoContainer.cxx:92 AliEMCalHistoContainer.cxx:93 AliEMCalHistoContainer.cxx:94 AliEMCalHistoContainer.cxx:95 AliEMCalHistoContainer.cxx:96 AliEMCalHistoContainer.cxx:97 AliEMCalHistoContainer.cxx:98 AliEMCalHistoContainer.cxx:99 AliEMCalHistoContainer.cxx:100 AliEMCalHistoContainer.cxx:101 AliEMCalHistoContainer.cxx:102 AliEMCalHistoContainer.cxx:103 AliEMCalHistoContainer.cxx:104 AliEMCalHistoContainer.cxx:105 AliEMCalHistoContainer.cxx:106 AliEMCalHistoContainer.cxx:107 AliEMCalHistoContainer.cxx:108 AliEMCalHistoContainer.cxx:109 AliEMCalHistoContainer.cxx:110 AliEMCalHistoContainer.cxx:111 AliEMCalHistoContainer.cxx:112 AliEMCalHistoContainer.cxx:113 AliEMCalHistoContainer.cxx:114 AliEMCalHistoContainer.cxx:115 AliEMCalHistoContainer.cxx:116 AliEMCalHistoContainer.cxx:117 AliEMCalHistoContainer.cxx:118 AliEMCalHistoContainer.cxx:119 AliEMCalHistoContainer.cxx:120 AliEMCalHistoContainer.cxx:121 AliEMCalHistoContainer.cxx:122 AliEMCalHistoContainer.cxx:123 AliEMCalHistoContainer.cxx:124 AliEMCalHistoContainer.cxx:125 AliEMCalHistoContainer.cxx:126 AliEMCalHistoContainer.cxx:127 AliEMCalHistoContainer.cxx:128 AliEMCalHistoContainer.cxx:129 AliEMCalHistoContainer.cxx:130 AliEMCalHistoContainer.cxx:131 AliEMCalHistoContainer.cxx:132 AliEMCalHistoContainer.cxx:133 AliEMCalHistoContainer.cxx:134 AliEMCalHistoContainer.cxx:135 AliEMCalHistoContainer.cxx:136 AliEMCalHistoContainer.cxx:137 AliEMCalHistoContainer.cxx:138 AliEMCalHistoContainer.cxx:139 AliEMCalHistoContainer.cxx:140 AliEMCalHistoContainer.cxx:141 AliEMCalHistoContainer.cxx:142 AliEMCalHistoContainer.cxx:143 AliEMCalHistoContainer.cxx:144 AliEMCalHistoContainer.cxx:145 AliEMCalHistoContainer.cxx:146 AliEMCalHistoContainer.cxx:147 AliEMCalHistoContainer.cxx:148 AliEMCalHistoContainer.cxx:149 AliEMCalHistoContainer.cxx:150 AliEMCalHistoContainer.cxx:151 AliEMCalHistoContainer.cxx:152 AliEMCalHistoContainer.cxx:153 AliEMCalHistoContainer.cxx:154 AliEMCalHistoContainer.cxx:155 AliEMCalHistoContainer.cxx:156 AliEMCalHistoContainer.cxx:157 AliEMCalHistoContainer.cxx:158 AliEMCalHistoContainer.cxx:159 AliEMCalHistoContainer.cxx:160 AliEMCalHistoContainer.cxx:161 AliEMCalHistoContainer.cxx:162 AliEMCalHistoContainer.cxx:163 AliEMCalHistoContainer.cxx:164 AliEMCalHistoContainer.cxx:165 AliEMCalHistoContainer.cxx:166 AliEMCalHistoContainer.cxx:167 AliEMCalHistoContainer.cxx:168 AliEMCalHistoContainer.cxx:169 AliEMCalHistoContainer.cxx:170 AliEMCalHistoContainer.cxx:171 AliEMCalHistoContainer.cxx:172 AliEMCalHistoContainer.cxx:173 AliEMCalHistoContainer.cxx:174 AliEMCalHistoContainer.cxx:175 AliEMCalHistoContainer.cxx:176 AliEMCalHistoContainer.cxx:177 AliEMCalHistoContainer.cxx:178 AliEMCalHistoContainer.cxx:179 AliEMCalHistoContainer.cxx:180 AliEMCalHistoContainer.cxx:181 AliEMCalHistoContainer.cxx:182 AliEMCalHistoContainer.cxx:183 AliEMCalHistoContainer.cxx:184 AliEMCalHistoContainer.cxx:185 AliEMCalHistoContainer.cxx:186 AliEMCalHistoContainer.cxx:187 AliEMCalHistoContainer.cxx:188 AliEMCalHistoContainer.cxx:189 AliEMCalHistoContainer.cxx:190 AliEMCalHistoContainer.cxx:191 AliEMCalHistoContainer.cxx:192 AliEMCalHistoContainer.cxx:193 AliEMCalHistoContainer.cxx:194 AliEMCalHistoContainer.cxx:195 AliEMCalHistoContainer.cxx:196 AliEMCalHistoContainer.cxx:197 AliEMCalHistoContainer.cxx:198 AliEMCalHistoContainer.cxx:199 AliEMCalHistoContainer.cxx:200 AliEMCalHistoContainer.cxx:201 AliEMCalHistoContainer.cxx:202 AliEMCalHistoContainer.cxx:203 AliEMCalHistoContainer.cxx:204 AliEMCalHistoContainer.cxx:205 AliEMCalHistoContainer.cxx:206 AliEMCalHistoContainer.cxx:207 AliEMCalHistoContainer.cxx:208 AliEMCalHistoContainer.cxx:209 AliEMCalHistoContainer.cxx:210 AliEMCalHistoContainer.cxx:211 AliEMCalHistoContainer.cxx:212 AliEMCalHistoContainer.cxx:213 AliEMCalHistoContainer.cxx:214 AliEMCalHistoContainer.cxx:215 AliEMCalHistoContainer.cxx:216 AliEMCalHistoContainer.cxx:217 AliEMCalHistoContainer.cxx:218 AliEMCalHistoContainer.cxx:219 AliEMCalHistoContainer.cxx:220 AliEMCalHistoContainer.cxx:221 AliEMCalHistoContainer.cxx:222 AliEMCalHistoContainer.cxx:223 AliEMCalHistoContainer.cxx:224 AliEMCalHistoContainer.cxx:225 AliEMCalHistoContainer.cxx:226 AliEMCalHistoContainer.cxx:227 AliEMCalHistoContainer.cxx:228 AliEMCalHistoContainer.cxx:229 AliEMCalHistoContainer.cxx:230 AliEMCalHistoContainer.cxx:231 AliEMCalHistoContainer.cxx:232 AliEMCalHistoContainer.cxx:233 AliEMCalHistoContainer.cxx:234 AliEMCalHistoContainer.cxx:235 AliEMCalHistoContainer.cxx:236 AliEMCalHistoContainer.cxx:237 AliEMCalHistoContainer.cxx:238 AliEMCalHistoContainer.cxx:239 AliEMCalHistoContainer.cxx:240 AliEMCalHistoContainer.cxx:241 AliEMCalHistoContainer.cxx:242 AliEMCalHistoContainer.cxx:243 AliEMCalHistoContainer.cxx:244 AliEMCalHistoContainer.cxx:245 AliEMCalHistoContainer.cxx:246 AliEMCalHistoContainer.cxx:247 AliEMCalHistoContainer.cxx:248 AliEMCalHistoContainer.cxx:249 AliEMCalHistoContainer.cxx:250 AliEMCalHistoContainer.cxx:251 AliEMCalHistoContainer.cxx:252 AliEMCalHistoContainer.cxx:253 AliEMCalHistoContainer.cxx:254 AliEMCalHistoContainer.cxx:255 AliEMCalHistoContainer.cxx:256 AliEMCalHistoContainer.cxx:257 AliEMCalHistoContainer.cxx:258 AliEMCalHistoContainer.cxx:259 AliEMCalHistoContainer.cxx:260 AliEMCalHistoContainer.cxx:261 AliEMCalHistoContainer.cxx:262 AliEMCalHistoContainer.cxx:263 AliEMCalHistoContainer.cxx:264 AliEMCalHistoContainer.cxx:265 AliEMCalHistoContainer.cxx:266 AliEMCalHistoContainer.cxx:267 AliEMCalHistoContainer.cxx:268 AliEMCalHistoContainer.cxx:269 AliEMCalHistoContainer.cxx:270 AliEMCalHistoContainer.cxx:271 AliEMCalHistoContainer.cxx:272 AliEMCalHistoContainer.cxx:273 AliEMCalHistoContainer.cxx:274 AliEMCalHistoContainer.cxx:275 AliEMCalHistoContainer.cxx:276 AliEMCalHistoContainer.cxx:277 AliEMCalHistoContainer.cxx:278 AliEMCalHistoContainer.cxx:279 AliEMCalHistoContainer.cxx:280 AliEMCalHistoContainer.cxx:281 AliEMCalHistoContainer.cxx:282 AliEMCalHistoContainer.cxx:283 AliEMCalHistoContainer.cxx:284 AliEMCalHistoContainer.cxx:285 AliEMCalHistoContainer.cxx:286 AliEMCalHistoContainer.cxx:287 AliEMCalHistoContainer.cxx:288 AliEMCalHistoContainer.cxx:289 AliEMCalHistoContainer.cxx:290 AliEMCalHistoContainer.cxx:291 AliEMCalHistoContainer.cxx:292 AliEMCalHistoContainer.cxx:293 AliEMCalHistoContainer.cxx:294 AliEMCalHistoContainer.cxx:295 AliEMCalHistoContainer.cxx:296 AliEMCalHistoContainer.cxx:297 AliEMCalHistoContainer.cxx:298 AliEMCalHistoContainer.cxx:299 AliEMCalHistoContainer.cxx:300 AliEMCalHistoContainer.cxx:301 AliEMCalHistoContainer.cxx:302 AliEMCalHistoContainer.cxx:303 AliEMCalHistoContainer.cxx:304 AliEMCalHistoContainer.cxx:305 AliEMCalHistoContainer.cxx:306 AliEMCalHistoContainer.cxx:307 AliEMCalHistoContainer.cxx:308 AliEMCalHistoContainer.cxx:309 AliEMCalHistoContainer.cxx:310 AliEMCalHistoContainer.cxx:311 AliEMCalHistoContainer.cxx:312 AliEMCalHistoContainer.cxx:313 AliEMCalHistoContainer.cxx:314 AliEMCalHistoContainer.cxx:315 AliEMCalHistoContainer.cxx:316 AliEMCalHistoContainer.cxx:317 AliEMCalHistoContainer.cxx:318 AliEMCalHistoContainer.cxx:319 AliEMCalHistoContainer.cxx:320 AliEMCalHistoContainer.cxx:321 AliEMCalHistoContainer.cxx:322 AliEMCalHistoContainer.cxx:323 AliEMCalHistoContainer.cxx:324 AliEMCalHistoContainer.cxx:325 AliEMCalHistoContainer.cxx:326 AliEMCalHistoContainer.cxx:327 AliEMCalHistoContainer.cxx:328 AliEMCalHistoContainer.cxx:329 AliEMCalHistoContainer.cxx:330 AliEMCalHistoContainer.cxx:331 AliEMCalHistoContainer.cxx:332 AliEMCalHistoContainer.cxx:333 AliEMCalHistoContainer.cxx:334 AliEMCalHistoContainer.cxx:335 AliEMCalHistoContainer.cxx:336 AliEMCalHistoContainer.cxx:337 AliEMCalHistoContainer.cxx:338 AliEMCalHistoContainer.cxx:339 AliEMCalHistoContainer.cxx:340 AliEMCalHistoContainer.cxx:341 AliEMCalHistoContainer.cxx:342 AliEMCalHistoContainer.cxx:343 AliEMCalHistoContainer.cxx:344 AliEMCalHistoContainer.cxx:345 AliEMCalHistoContainer.cxx:346 AliEMCalHistoContainer.cxx:347 AliEMCalHistoContainer.cxx:348 AliEMCalHistoContainer.cxx:349 AliEMCalHistoContainer.cxx:350 AliEMCalHistoContainer.cxx:351 AliEMCalHistoContainer.cxx:352 AliEMCalHistoContainer.cxx:353 AliEMCalHistoContainer.cxx:354 AliEMCalHistoContainer.cxx:355 AliEMCalHistoContainer.cxx:356 AliEMCalHistoContainer.cxx:357 AliEMCalHistoContainer.cxx:358 AliEMCalHistoContainer.cxx:359 AliEMCalHistoContainer.cxx:360 AliEMCalHistoContainer.cxx:361 AliEMCalHistoContainer.cxx:362 AliEMCalHistoContainer.cxx:363 AliEMCalHistoContainer.cxx:364 AliEMCalHistoContainer.cxx:365 AliEMCalHistoContainer.cxx:366 AliEMCalHistoContainer.cxx:367 AliEMCalHistoContainer.cxx:368 AliEMCalHistoContainer.cxx:369 AliEMCalHistoContainer.cxx:370 AliEMCalHistoContainer.cxx:371 AliEMCalHistoContainer.cxx:372 AliEMCalHistoContainer.cxx:373 AliEMCalHistoContainer.cxx:374 AliEMCalHistoContainer.cxx:375 AliEMCalHistoContainer.cxx:376 AliEMCalHistoContainer.cxx:377 AliEMCalHistoContainer.cxx:378 AliEMCalHistoContainer.cxx:379 AliEMCalHistoContainer.cxx:380 AliEMCalHistoContainer.cxx:381 AliEMCalHistoContainer.cxx:382 AliEMCalHistoContainer.cxx:383 AliEMCalHistoContainer.cxx:384 AliEMCalHistoContainer.cxx:385 AliEMCalHistoContainer.cxx:386 AliEMCalHistoContainer.cxx:387 AliEMCalHistoContainer.cxx:388 AliEMCalHistoContainer.cxx:389 AliEMCalHistoContainer.cxx:390 AliEMCalHistoContainer.cxx:391 AliEMCalHistoContainer.cxx:392 AliEMCalHistoContainer.cxx:393 AliEMCalHistoContainer.cxx:394 AliEMCalHistoContainer.cxx:395 AliEMCalHistoContainer.cxx:396 AliEMCalHistoContainer.cxx:397 AliEMCalHistoContainer.cxx:398 AliEMCalHistoContainer.cxx:399 AliEMCalHistoContainer.cxx:400 AliEMCalHistoContainer.cxx:401 AliEMCalHistoContainer.cxx:402 AliEMCalHistoContainer.cxx:403 AliEMCalHistoContainer.cxx:404 AliEMCalHistoContainer.cxx:405 AliEMCalHistoContainer.cxx:406 AliEMCalHistoContainer.cxx:407 AliEMCalHistoContainer.cxx:408 AliEMCalHistoContainer.cxx:409 AliEMCalHistoContainer.cxx:410 AliEMCalHistoContainer.cxx:411 AliEMCalHistoContainer.cxx:412 AliEMCalHistoContainer.cxx:413 AliEMCalHistoContainer.cxx:414 AliEMCalHistoContainer.cxx:415 AliEMCalHistoContainer.cxx:416 AliEMCalHistoContainer.cxx:417 AliEMCalHistoContainer.cxx:418 AliEMCalHistoContainer.cxx:419 AliEMCalHistoContainer.cxx:420 AliEMCalHistoContainer.cxx:421 AliEMCalHistoContainer.cxx:422 AliEMCalHistoContainer.cxx:423 AliEMCalHistoContainer.cxx:424 AliEMCalHistoContainer.cxx:425 AliEMCalHistoContainer.cxx:426 AliEMCalHistoContainer.cxx:427 AliEMCalHistoContainer.cxx:428 AliEMCalHistoContainer.cxx:429 AliEMCalHistoContainer.cxx:430 AliEMCalHistoContainer.cxx:431 AliEMCalHistoContainer.cxx:432 AliEMCalHistoContainer.cxx:433 AliEMCalHistoContainer.cxx:434 AliEMCalHistoContainer.cxx:435 AliEMCalHistoContainer.cxx:436 AliEMCalHistoContainer.cxx:437 AliEMCalHistoContainer.cxx:438 AliEMCalHistoContainer.cxx:439 AliEMCalHistoContainer.cxx:440 AliEMCalHistoContainer.cxx:441 AliEMCalHistoContainer.cxx:442 AliEMCalHistoContainer.cxx:443 AliEMCalHistoContainer.cxx:444 AliEMCalHistoContainer.cxx:445 AliEMCalHistoContainer.cxx:446 AliEMCalHistoContainer.cxx:447 AliEMCalHistoContainer.cxx:448 AliEMCalHistoContainer.cxx:449 AliEMCalHistoContainer.cxx:450 AliEMCalHistoContainer.cxx:451 AliEMCalHistoContainer.cxx:452 AliEMCalHistoContainer.cxx:453 AliEMCalHistoContainer.cxx:454 AliEMCalHistoContainer.cxx:455 AliEMCalHistoContainer.cxx:456 AliEMCalHistoContainer.cxx:457 AliEMCalHistoContainer.cxx:458 AliEMCalHistoContainer.cxx:459 AliEMCalHistoContainer.cxx:460 AliEMCalHistoContainer.cxx:461 AliEMCalHistoContainer.cxx:462 AliEMCalHistoContainer.cxx:463 AliEMCalHistoContainer.cxx:464 AliEMCalHistoContainer.cxx:465 AliEMCalHistoContainer.cxx:466 AliEMCalHistoContainer.cxx:467 AliEMCalHistoContainer.cxx:468 AliEMCalHistoContainer.cxx:469 AliEMCalHistoContainer.cxx:470 AliEMCalHistoContainer.cxx:471 AliEMCalHistoContainer.cxx:472 AliEMCalHistoContainer.cxx:473 AliEMCalHistoContainer.cxx:474 AliEMCalHistoContainer.cxx:475 AliEMCalHistoContainer.cxx:476 AliEMCalHistoContainer.cxx:477 AliEMCalHistoContainer.cxx:478 AliEMCalHistoContainer.cxx:479 AliEMCalHistoContainer.cxx:480 AliEMCalHistoContainer.cxx:481 AliEMCalHistoContainer.cxx:482 AliEMCalHistoContainer.cxx:483 AliEMCalHistoContainer.cxx:484 AliEMCalHistoContainer.cxx:485 AliEMCalHistoContainer.cxx:486 AliEMCalHistoContainer.cxx:487 AliEMCalHistoContainer.cxx:488 AliEMCalHistoContainer.cxx:489 AliEMCalHistoContainer.cxx:490 AliEMCalHistoContainer.cxx:491 AliEMCalHistoContainer.cxx:492 AliEMCalHistoContainer.cxx:493 AliEMCalHistoContainer.cxx:494 AliEMCalHistoContainer.cxx:495 AliEMCalHistoContainer.cxx:496 AliEMCalHistoContainer.cxx:497 AliEMCalHistoContainer.cxx:498 AliEMCalHistoContainer.cxx:499 AliEMCalHistoContainer.cxx:500 AliEMCalHistoContainer.cxx:501 AliEMCalHistoContainer.cxx:502 AliEMCalHistoContainer.cxx:503 AliEMCalHistoContainer.cxx:504 AliEMCalHistoContainer.cxx:505 AliEMCalHistoContainer.cxx:506 AliEMCalHistoContainer.cxx:507 AliEMCalHistoContainer.cxx:508 AliEMCalHistoContainer.cxx:509 AliEMCalHistoContainer.cxx:510 AliEMCalHistoContainer.cxx:511 AliEMCalHistoContainer.cxx:512 AliEMCalHistoContainer.cxx:513 AliEMCalHistoContainer.cxx:514 AliEMCalHistoContainer.cxx:515 AliEMCalHistoContainer.cxx:516 AliEMCalHistoContainer.cxx:517 AliEMCalHistoContainer.cxx:518 AliEMCalHistoContainer.cxx:519 AliEMCalHistoContainer.cxx:520 AliEMCalHistoContainer.cxx:521 AliEMCalHistoContainer.cxx:522 AliEMCalHistoContainer.cxx:523 AliEMCalHistoContainer.cxx:524 AliEMCalHistoContainer.cxx:525 AliEMCalHistoContainer.cxx:526 AliEMCalHistoContainer.cxx:527 AliEMCalHistoContainer.cxx:528 AliEMCalHistoContainer.cxx:529 AliEMCalHistoContainer.cxx:530 AliEMCalHistoContainer.cxx:531 AliEMCalHistoContainer.cxx:532 AliEMCalHistoContainer.cxx:533 AliEMCalHistoContainer.cxx:534 AliEMCalHistoContainer.cxx:535 AliEMCalHistoContainer.cxx:536 AliEMCalHistoContainer.cxx:537 AliEMCalHistoContainer.cxx:538 AliEMCalHistoContainer.cxx:539 AliEMCalHistoContainer.cxx:540 AliEMCalHistoContainer.cxx:541 AliEMCalHistoContainer.cxx:542 AliEMCalHistoContainer.cxx:543 AliEMCalHistoContainer.cxx:544 AliEMCalHistoContainer.cxx:545 AliEMCalHistoContainer.cxx:546 AliEMCalHistoContainer.cxx:547 AliEMCalHistoContainer.cxx:548 AliEMCalHistoContainer.cxx:549 AliEMCalHistoContainer.cxx:550 AliEMCalHistoContainer.cxx:551 AliEMCalHistoContainer.cxx:552 AliEMCalHistoContainer.cxx:553 AliEMCalHistoContainer.cxx:554 AliEMCalHistoContainer.cxx:555 AliEMCalHistoContainer.cxx:556 AliEMCalHistoContainer.cxx:557 AliEMCalHistoContainer.cxx:558 AliEMCalHistoContainer.cxx:559 AliEMCalHistoContainer.cxx:560 AliEMCalHistoContainer.cxx:561 AliEMCalHistoContainer.cxx:562 AliEMCalHistoContainer.cxx:563 AliEMCalHistoContainer.cxx:564 AliEMCalHistoContainer.cxx:565 AliEMCalHistoContainer.cxx:566 AliEMCalHistoContainer.cxx:567 AliEMCalHistoContainer.cxx:568 AliEMCalHistoContainer.cxx:569 AliEMCalHistoContainer.cxx:570 AliEMCalHistoContainer.cxx:571 AliEMCalHistoContainer.cxx:572 AliEMCalHistoContainer.cxx:573 AliEMCalHistoContainer.cxx:574 AliEMCalHistoContainer.cxx:575 AliEMCalHistoContainer.cxx:576 AliEMCalHistoContainer.cxx:577 AliEMCalHistoContainer.cxx:578 AliEMCalHistoContainer.cxx:579 AliEMCalHistoContainer.cxx:580 AliEMCalHistoContainer.cxx:581 AliEMCalHistoContainer.cxx:582 AliEMCalHistoContainer.cxx:583 AliEMCalHistoContainer.cxx:584 AliEMCalHistoContainer.cxx:585 AliEMCalHistoContainer.cxx:586 AliEMCalHistoContainer.cxx:587 AliEMCalHistoContainer.cxx:588 AliEMCalHistoContainer.cxx:589 AliEMCalHistoContainer.cxx:590 AliEMCalHistoContainer.cxx:591 AliEMCalHistoContainer.cxx:592 AliEMCalHistoContainer.cxx:593 AliEMCalHistoContainer.cxx:594 AliEMCalHistoContainer.cxx:595 AliEMCalHistoContainer.cxx:596 AliEMCalHistoContainer.cxx:597 AliEMCalHistoContainer.cxx:598 AliEMCalHistoContainer.cxx:599 AliEMCalHistoContainer.cxx:600 AliEMCalHistoContainer.cxx:601 AliEMCalHistoContainer.cxx:602 AliEMCalHistoContainer.cxx:603 AliEMCalHistoContainer.cxx:604 AliEMCalHistoContainer.cxx:605 AliEMCalHistoContainer.cxx:606 AliEMCalHistoContainer.cxx:607 AliEMCalHistoContainer.cxx:608 AliEMCalHistoContainer.cxx:609 AliEMCalHistoContainer.cxx:610 AliEMCalHistoContainer.cxx:611 AliEMCalHistoContainer.cxx:612 AliEMCalHistoContainer.cxx:613 AliEMCalHistoContainer.cxx:614 AliEMCalHistoContainer.cxx:615 AliEMCalHistoContainer.cxx:616 AliEMCalHistoContainer.cxx:617 AliEMCalHistoContainer.cxx:618 AliEMCalHistoContainer.cxx:619 AliEMCalHistoContainer.cxx:620 AliEMCalHistoContainer.cxx:621 AliEMCalHistoContainer.cxx:622 AliEMCalHistoContainer.cxx:623 AliEMCalHistoContainer.cxx:624 AliEMCalHistoContainer.cxx:625 AliEMCalHistoContainer.cxx:626 AliEMCalHistoContainer.cxx:627 AliEMCalHistoContainer.cxx:628 AliEMCalHistoContainer.cxx:629 AliEMCalHistoContainer.cxx:630 AliEMCalHistoContainer.cxx:631 AliEMCalHistoContainer.cxx:632 AliEMCalHistoContainer.cxx:633 AliEMCalHistoContainer.cxx:634 AliEMCalHistoContainer.cxx:635 AliEMCalHistoContainer.cxx:636 AliEMCalHistoContainer.cxx:637 AliEMCalHistoContainer.cxx:638 AliEMCalHistoContainer.cxx:639 AliEMCalHistoContainer.cxx:640 AliEMCalHistoContainer.cxx:641 AliEMCalHistoContainer.cxx:642 AliEMCalHistoContainer.cxx:643 AliEMCalHistoContainer.cxx:644 AliEMCalHistoContainer.cxx:645 AliEMCalHistoContainer.cxx:646 AliEMCalHistoContainer.cxx:647 AliEMCalHistoContainer.cxx:648 AliEMCalHistoContainer.cxx:649 AliEMCalHistoContainer.cxx:650 AliEMCalHistoContainer.cxx:651 AliEMCalHistoContainer.cxx:652 AliEMCalHistoContainer.cxx:653 AliEMCalHistoContainer.cxx:654 AliEMCalHistoContainer.cxx:655 AliEMCalHistoContainer.cxx:656 AliEMCalHistoContainer.cxx:657