add histogram utilities class, correct package definitions
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALHistoUtilities.cxx
CommitLineData
315d1c64 1/**************************************************************************
2 * Copyright(c) 1998-2002, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
18*/
19
20//*-- Authors: J.L. Klay (LLNL) & Aleksei Pavlinov (WSU)
21
22//*
23
24#include <TBrowser.h>
25#include <TFile.h>
26#include <TList.h>
27#include <TH1.h>
28#include <TH2.h>
29#include <TROOT.h>
30#include <TString.h>
31
32#include "AliEMCALHistoUtilities.h"
33
34ClassImp(AliEMCALHistoUtilities)
35
36AliEMCALHistoUtilities::AliEMCALHistoUtilities(const char *name, const char *tit) : TNamed(name,tit)
37{
38 //constructor
39 fDebug = 0;
40 gROOT->cd();
41 fListHist = MoveHistsToList("Hist For AliEMCALHistoUtilities", kFALSE);
42}
43
44AliEMCALHistoUtilities::~AliEMCALHistoUtilities()
45{
46 //destructor
47}
48
49void AliEMCALHistoUtilities::Browse(TBrowser* b) const
50{
51 // Browse
52 if(fListHist) b->Add((TObject*)fListHist);
53 // TObject::Browse(b);
54}
55
56Bool_t AliEMCALHistoUtilities::IsFolder() const
57{
58 // Is folder
59 if(fListHist) return kTRUE;
60 else return kFALSE;
61}
62
63TList* AliEMCALHistoUtilities::MoveHistsToList(const char* name, Bool_t putToBrowser)
64{
65 // Move HIST to list
66 gROOT->cd();
67 TIter nextHist(gDirectory->GetList());
68 TList *list = new TList;
69 list->SetName(name);
70 TObject *objHist;
71 while((objHist=nextHist())){
72 if (!objHist->InheritsFrom("TH1")) continue;
73 ((TH1*)objHist)->SetDirectory(0); // Remove from gROOT
74 list->Add(objHist);
75 }
76 if(putToBrowser) gROOT->GetListOfBrowsables()->Add((TObject*)list);
77 return list;
78}
79
80void AliEMCALHistoUtilities::FillH1(TList *l, Int_t ind, Double_t x, Double_t w)
81{
82 static TH1* hid=0;
83 if(l == 0) return;
84 if(ind < l->GetSize()){
85 hid = (TH1*)l->At(ind);
86 hid->Fill(x,w);
87 }
88}
89
90void AliEMCALHistoUtilities::FillH2(TList *l, Int_t ind, Double_t x, Double_t y, Double_t w)
91{
92 static TH2* hid=0;
93 if(l == 0) return;
94 if(ind < l->GetSize()){
95 hid = (TH2*)l->At(ind);
96 hid->Fill(x,y,w);
97 }
98}
99
100int AliEMCALHistoUtilities::SaveListOfHists(TList *list,const char* name,Bool_t kSingleKey,const char* opt)
101{
102 printf(" Name of out file |%s|\n", name);
103 int save = 0;
104 if(list && list->GetSize() && strlen(name)){
105 TString nf(name);
106 if(nf.Contains(".root") == kFALSE) nf += ".root";
107 TFile file(nf.Data(),opt);
108 TIter nextHist(list);
109 TObject* objHist=0;
110 int nh=0;
111 if(kSingleKey) {
112 file.cd();
113 list->Write(list->GetName(),TObject::kSingleKey);
114 list->ls();
115 save = 1;
116 } else {
117 while((objHist=nextHist())) { // loop over list
118 if(objHist->InheritsFrom("TH1")) {
119 TH1* hid = (TH1*)objHist;
120 file.cd();
121 hid->Write();
122 nh++;
123 printf("Save hist. %s \n",hid ->GetName());
124 }
125 }
126 printf("%i hists. save to file -> %s\n", nh,file.GetName());
127 if(nh>0) save = 1;
128 }
129 file.Close();
130 } else {
131 printf("AliEMCALHistoUtilities::SaveListOfHists : N O S A V I N G \n");
132 if(list==0) printf("List of object 0 : %p \n", list);
133 else printf("Size of list %i \n", list->GetSize());
134 }
135 return save;
136}