22 #include <THnSparse.h>
23 #include <THashList.h>
24 #include <TObjArray.h>
25 #include <TObjString.h>
36 namespace EMCalTriggerPtAnalysis {
41 AliEMCalHistoContainer::AliEMCalHistoContainer():
54 TNamed(name, Form(
"Histogram container %s", name)),
59 fHistos->SetName(Form(
"histos%s", name));
79 THashList *parentgroup = FindGroup(parent);
81 THashList *childgroup =
new THashList();
82 childgroup->SetName(groupname);
83 parentgroup->Add(childgroup);
99 TString dirname(basename(name)), hname(histname(name));
100 THashList *parent(FindGroup(dirname.Data()));
103 if(parent->FindObject(hname.Data()))
105 TH1 *hist =
new TH1D(hname.Data(),
title,
nbins, xmin, xmax);
106 TString optionstring(opt);
107 optionstring.ToLower();
108 if(optionstring.Contains(
"s"))
125 TString dirname(basename(name)), hname(histname(name));
126 THashList *parent(FindGroup(dirname));
129 if(parent->FindObject(hname.Data()))
131 TH1 *hist =
new TH1D(hname.Data(),
title,
nbins, xbins);
132 TString optionstring(opt);
133 optionstring.ToLower();
134 if(optionstring.Contains(
"s"))
150 TString dirname(basename(name)), hname(histname(name));
151 THashList *parent(FindGroup(dirname));
154 if(parent->FindObject(hname.Data()))
156 TH1 *hist =
new TH1D(hname.Data(),
title, xbins.GetSize()-1, xbins.GetArray());
157 TString optionstring(opt);
158 optionstring.ToLower();
159 if(optionstring.Contains(
"s"))
177 TString dirname(basename(name)), hname(histname(name));
178 THashList *parent(FindGroup(dirname));
181 if(parent->FindObject(hname.Data()))
183 TProfile *hist =
new TProfile(hname.Data(),
title, nbinsX, xmin, xmax, opt);
184 TString optionstring(opt);
201 TString dirname(basename(name)), hname(histname(name));
202 THashList *parent(FindGroup(dirname));
205 if(parent->FindObject(hname.Data()))
207 TProfile *hist =
new TProfile(hname.Data(),
title, nbinsX, xbins, opt);
208 TString optionstring(opt);
225 TString dirname(basename(name)), hname(histname(name));
226 THashList *parent(FindGroup(dirname));
229 if(parent->FindObject(hname.Data()))
231 TProfile *hist =
new TProfile(hname.Data(),
title, xbins.GetSize()-1, xbins.GetArray(), opt);
251 TString dirname(basename(name)), hname(histname(name));
252 THashList *parent(FindGroup(dirname.Data()));
255 if(parent->FindObject(hname.Data()))
258 TString optionstring(opt);
259 optionstring.ToLower();
260 if(optionstring.Contains(
"s"))
279 TString dirname(basename(name)), hname(histname(name));
280 THashList *parent(FindGroup(dirname.Data()));
283 if(parent->FindObject(hname.Data()))
286 TString optionstring(opt);
287 optionstring.ToLower();
288 if(optionstring.Contains(
"s"))
304 TString dirname(basename(name)), hname(histname(name));
305 THashList *parent(FindGroup(dirname.Data()));
308 if(parent->FindObject(hname.Data()))
310 TH2 *hist =
new TH2D(hname.Data(),
title, xbins.GetSize() - 1, xbins.GetArray(), ybins.GetSize() - 1, ybins.GetArray());
311 TString optionstring(opt);
312 optionstring.ToLower();
313 if(optionstring.Contains(
"s"))
335 TString dirname(basename(name)), hname(histname(name));
336 THashList *parent(FindGroup(dirname.Data()));
339 if(parent->FindObject(hname.Data()))
341 TH3 *hist =
new TH3D(hname.Data(),
title,
nbinsx, xmin, xmax,
nbinsy,
ymin,
ymax, nbinsz,
zmin,
zmax);
342 TString optionstring(opt);
343 optionstring.ToLower();
344 if(optionstring.Contains(
"s"))
365 TString dirname(basename(name)), hname(histname(name));
366 THashList *parent(FindGroup(dirname.Data()));
369 if(parent->FindObject(hname.Data()))
371 TH3 *hist =
new TH3D(hname.Data(),
title,
nbinsx, xbins,
nbinsy, ybins, nbinsz, zbins);
372 TString optionstring(opt);
373 optionstring.ToLower();
374 if(optionstring.Contains(
"s"))
392 TString dirname(basename(name)), hname(histname(name));
393 THashList *parent(FindGroup(dirname.Data()));
396 if(parent->FindObject(hname.Data()))
398 TH3 *hist =
new TH3D(hname.Data(),
title, xbins.GetSize()-1, xbins.GetArray(), ybins.GetSize()-1, ybins.GetArray(), zbins.GetSize()-1, zbins.GetArray());
399 TString optionstring(opt);
400 optionstring.ToLower();
401 if(optionstring.Contains(
"s"))
420 TString dirname(basename(name)), hname(histname(name));
421 THashList *parent(FindGroup(dirname.Data()));
424 if(parent->FindObject(hname.Data()))
426 THnSparseD *hist =
new THnSparseD(hname.Data(),
title, ndim,
nbins, min, max);
427 TString optionstring(opt);
428 optionstring.ToLower();
429 if(optionstring.Contains(
"s"))
445 TString dirname(basename(name)), hname(histname(name));
446 THashList *parent(FindGroup(dirname.Data()));
449 if(parent->FindObject(hname))
451 TArrayD xmin(ndim), xmax(ndim);
453 for(
int idim = 0; idim < ndim; ++idim){
454 const TAxis &myaxis = *(axes[idim]);
455 nbins[idim] = myaxis.GetNbins();
456 xmin[idim] = myaxis.GetXmin();
457 xmax[idim] = myaxis.GetXmax();
459 THnSparseD *hsparse =
new THnSparseD(hname.Data(),
title, ndim, nbins.GetArray(), xmin.GetArray(), xmax.GetArray());
460 for(
int id = 0;
id < ndim; ++id)
461 *(hsparse->GetAxis(
id)) = *(axes[
id]);
462 TString optionstring(opt);
463 optionstring.ToLower();
464 if(optionstring.Contains(
"s"))
466 parent->Add(hsparse);
475 THashList *parent(FindGroup(group));
478 if(parent->FindObject(o->GetName()))
480 if(!(dynamic_cast<THnBase *>(o) || dynamic_cast<TH1 *>(o)))
495 TString dirname(basename(name)), hname(histname(name));
496 THashList *parent(FindGroup(dirname.Data()));
499 TH1 *hist =
dynamic_cast<TH1 *
>(parent->FindObject(hname.Data()));
502 hist->Fill(x, weight);
516 TString dirname(basename(name)), hname(histname(name));
517 THashList *parent(FindGroup(dirname.Data()));
520 TProfile *hist =
dynamic_cast<TProfile *
>(parent->FindObject(hname.Data()));
523 hist->Fill(x, y, weight);
537 TString dirname(basename(name)), hname(histname(name));
538 THashList *parent(FindGroup(dirname.Data()));
541 TH2 *hist =
dynamic_cast<TH2 *
>(parent->FindObject(hname.Data()));
544 hist->Fill(x, y, weight);
557 TString dirname(basename(name)), hname(histname(name));
558 THashList *parent(FindGroup(dirname.Data()));
561 TH2 *hist =
dynamic_cast<TH2 *
>(parent->FindObject(hname.Data()));
564 hist->Fill(point[0], point[1], weight);
579 TString dirname(basename(name)), hname(histname(name));
580 THashList *parent(FindGroup(dirname.Data()));
583 TH3 *hist =
dynamic_cast<TH3 *
>(parent->FindObject(hname.Data()));
586 hist->Fill(x, y, z, weight);
598 TString dirname(basename(name)), hname(histname(name));
599 THashList *parent(FindGroup(dirname.Data()));
602 TH3 *hist =
dynamic_cast<TH3 *
>(parent->FindObject(hname.Data()));
605 hist->Fill(point[0], point[1], point[2], weight);
618 TString dirname(basename(name)), hname(histname(name));
619 THashList *parent(FindGroup(dirname.Data()));
622 THnSparseD *hist =
dynamic_cast<THnSparseD *
>(parent->FindObject(hname.Data()));
625 hist->Fill(x, weight);
637 THashList *parent(
FindGroup(dirname.Data()));
638 if(!parent)
return NULL;
639 return parent->FindObject(hname);
651 THashList *parent(
FindGroup(dirname.Data()));
652 if(!parent)
return NULL;
653 return parent->FindObject(hname);
663 if(!strlen(dirname) || !strcmp(dirname,
"/"))
return fHistos;
664 std::vector<std::string> tokens;
666 THashList *currentdir(
fHistos);
667 for(std::vector<std::string>::iterator it = tokens.begin(); it != tokens.end(); ++it){
668 currentdir =
dynamic_cast<THashList *
>(currentdir->FindObject(it->c_str()));
669 if(!currentdir)
break;
683 TObjArray *arr = s.Tokenize(delim);
684 TObjString *ostr(NULL);
686 while((ostr = dynamic_cast<TObjString *>(toks()))){
687 listoftokens.push_back(std::string(ostr->String().Data()));
700 int index = s.Last(
'/');
701 if(index < 0)
return "";
702 return TString(s(0, index)).Data();
713 int index = s.Last(
'/');
714 if(index < 0)
return path;
715 return TString(s(index+1, s.Length() - (index+1))).
Data();
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
virtual ~AliEMCalHistoContainer()
void FillTH2(const char *hname, double x, double y, double weight=1.)
void 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="")
void SetObject(TObject *const o, const char *group="/")
void CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Container class for histograms for the high- charged particle analysis.
void FillTHnSparse(const char *name, const double *x, double weight=1.)
void FillTH3(const char *hname, double x, double y, double z, double weight=1.)
Group error (not existing or duplicated)
Exception thrown by the histogram container in case of problems.
virtual TObject * FindObject(const char *name) const
Histogram with name duplicated.
void CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
THashList * fHistos
List of histograms.
Declarartion of class AliEMCalHistoContainer.
void CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
const char * basename(const char *path) const
bool fIsOwner
Set the ownership.
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
void CreateTProfile(const char *name, const char *title, int nbinsX, double xmin, double xmax, Option_t *opt="")
void TokenizeFilename(const char *name, const char *delim, std::vector< std::string > &listoftokens) const
Histogram with name not found in the container.
const char * histname(const char *path) const
THashList * FindGroup(const char *dirname) const
void FillTH1(const char *hname, double x, double weight=1.)
void CreateHistoGroup(const char *groupname, const char *parent="/")
void FillProfile(const char *name, double x, double y, double weight=1.)