]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWG3/hfe/AliHFEcollection.cxx
Coding rules (Markus)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEcollection.cxx
... / ...
CommitLineData
1/**************************************************************************
2* Copyright(c) 1998-1999, 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// Collection class for histograms
17// Stores either histograms or vectors of histograms
18//
19// Author:
20// Matus Kalisky <matus.kalisky@cern.ch>
21//
22
23//#include <iostream>
24
25#include <TH1F.h>
26#include <TH2F.h>
27#include <TList.h>
28#include <TString.h>
29#include <TBrowser.h>
30#include <TIterator.h>
31
32#include "AliLog.h"
33#include "AliHFEcollection.h"
34
35using namespace std;
36
37
38ClassImp(AliHFEcollection)
39
40//___________________________________________________________________
41AliHFEcollection::AliHFEcollection():
42 TNamed()
43 , fListE(0x0)
44{
45 //
46 // default constructor
47 //
48
49 fListE = new TList();
50 if(!fListE){
51 AliError("Initialization of the list failed");
52 }
53 else{
54 // list is owner of the objects. Once list is deleted, the objects
55 // it contains will be deleted too
56 fListE->SetOwner(kTRUE);
57 }
58 //Printf("%s:%d,%p",(char*)__FILE__,__LINE__,fInstance);
59
60}
61//___________________________________________________________________
62AliHFEcollection::AliHFEcollection(char* name, char* title):
63 TNamed(name, title)
64 , fListE(0x0)
65{
66
67 //
68 // constructor
69 //
70
71 fListE = new TList();
72 if(!fListE){
73 AliError("Initialization of the list failed");
74 }
75 else{
76 // list is owner of the objects. Once list is deleted, the objects
77 // it contains will be deleted too
78 fListE->SetOwner(kTRUE);
79 }
80}
81//___________________________________________________________________
82AliHFEcollection::AliHFEcollection(const AliHFEcollection &c) :
83 TNamed(c)
84 , fListE(0x0)
85{
86
87 //
88 // copy operator
89 //
90
91 c.Copy(*this);
92}
93//___________________________________________________________________
94AliHFEcollection &AliHFEcollection::operator=(const AliHFEcollection &ref)
95{
96 //
97 // Assignment operator
98 //
99
100 if(this != &ref){
101 ref.Copy(*this);
102 }
103 return *this;
104}
105//___________________________________________________________________
106void AliHFEcollection::Copy(TObject &ref) const {
107 //
108 // Performs the copying of the object
109 //
110 AliHFEcollection &target = dynamic_cast<AliHFEcollection &>(ref);
111
112 target.fListE = fListE;
113}
114//___________________________________________________________________
115AliHFEcollection::~AliHFEcollection(){
116 //
117 // Destructor
118 //
119 AliInfo("DESTRUCTOR");
120}
121//___________________________________________________________________
122Bool_t AliHFEcollection::CreateTH1F(const char* name, const char* title, Int_t nBin, Float_t nMin, Float_t nMax){
123 //
124 // Creates a TH1F histogram for the collection
125 //
126 if(!fListE){
127 AliError("No TList pointer ! ");
128 return kFALSE;
129 }
130 else{
131 fListE->Add(new TH1F(name, title, nBin, nMin, nMax));
132 return CheckObject(name);
133 }
134}
135//___________________________________________________________________
136Bool_t AliHFEcollection::CreateTH2F(const char* name, const char* title, Int_t nBinX, Float_t nMinX, Float_t nMaxX, Int_t nBinY, Float_t nMinY, Float_t nMaxY){
137 //
138 // Creates a TH2F histogram for the collection
139 //
140 if(!fListE){
141 AliError("No TList pointer ! ");
142 return kFALSE;
143 }
144 fListE->Add(new TH2F(name, title, nBinX, nMinX, nMaxX, nBinY, nMinY, nMaxY));
145 return CheckObject(name);
146}
147//___________________________________________________________________
148Bool_t AliHFEcollection::CreateTH1Fvector1(Int_t X, const char* name, const char* title, Int_t nBin, Float_t nMin, Float_t nMax){
149 //
150 // create a 1 dimensional array of size [X]
151 //
152 if(!fListE){
153 AliError("No TList pointer ! ");
154 return kFALSE;
155 }
156 if(X <=0){
157 AliError("can not create array with negative or zero size ");
158 return kFALSE;
159 }
160 TString hname;
161 for(Int_t i=0; i<X; ++i){
162 hname = "";
163 hname.Append(Form("%s_[%d]", name, i));
164 //cout<<" -D: name: "<<name.str().c_str()<<endl;
165 //cout<<" -D: nBin: "<<_nBin<<" ,Min: "<<_nMin<<" , Max: "<<_nMax<<endl;
166 CreateTH1F(hname.Data(), title, nBin, nMin, nMax);
167 if(!CheckObject(hname.Data())){
168 AliError(Form("Not possible to create object: ", hname.Data()));
169 return kFALSE;
170 }
171 }
172 return kTRUE;
173}
174//___________________________________________________________________
175Bool_t AliHFEcollection::CreateTH2Fvector1(Int_t X, const char* name, const char* title, Int_t nBinX, Float_t nMinX, Float_t nMaxX, Int_t nBinY, Float_t nMinY, Float_t nMaxY){
176 //
177 // create a 1 dimensinal array of TH2F histograms with size [X]
178 //
179 if(!fListE){
180 AliError("No TList pointer !");
181 return kFALSE;
182 }
183 if(X <=0){
184 AliError("can not create array with negative or zero size ");
185 return kFALSE;
186 }
187 TString hname;
188 for(Int_t i=0; i<X; ++i){
189 hname = "";
190 hname.Append(Form("%s_[%d]", name, i));
191 //cout<<" -D: name: "<<name<<endl;
192 //cout<<" -D: nBin: "<<_nBin<<" ,Min: "<<_nMin<<" , Max: "<<_nMax<<endl;
193 CreateTH2F(hname.Data(), title, nBinX, nMinX, nMaxX, nBinY, nMinY, nMaxY);
194 if(!CheckObject(hname.Data())){
195 AliError(Form("Not possible to create object: %s", hname.Data()));
196 return kFALSE;
197 }
198 }
199 return kTRUE;
200}
201//___________________________________________________________________
202Bool_t AliHFEcollection::CreateTH1Fvector2(Int_t X, Int_t Y, const char* name, const char* title, Int_t nBin, Float_t nMin, Float_t nMax){
203 //
204 // create a 2 dimensional array of histograms of size [X, Y]
205 //
206 if(!fListE){
207 AliError("No TList pointer ! ");
208 return kFALSE;
209 }
210 if(X <=0 || Y <=0){
211 AliError("can not create array with negative or zero size ");
212 return kFALSE;
213 }
214 TString hname;
215 for(Int_t i=0; i<X; ++i){
216 for(Int_t j=0; j<Y; ++j){
217 hname = "";
218 hname.Append(Form("%s_[%d][%d]", name, i, j));
219 //cout<<" -D: name: "<<name.str().c_str()<<endl;
220 //cout<<" -D: nBin: "<<_nBin<<" ,Min: "<<_nMin<<" , Max: "<<_nMax<<endl;
221 CreateTH1F(hname.Data(), title, nBin, nMin, nMax);
222 if(!CheckObject(hname.Data())){
223 AliError(Form("Not possible to create object: %s", hname.Data()));
224 return kFALSE;
225 }
226 }
227 }
228 return kTRUE;
229
230
231}
232//___________________________________________________________________
233TObject* AliHFEcollection::Get(const char* name, Int_t X){
234 //
235 // Get the histogram from the vector
236 // Paramter:
237 // name - vector name
238 // X - Number of the desired histogram
239 //
240 TString hname = name;
241 hname.Append(Form("_[%d]", X));
242 if(!CheckObject(hname.Data())){
243 AliError("No such object found in the list");
244 return 0x0;
245 }
246 else{
247 return Get(hname.Data());
248 }
249}
250//___________________________________________________________________
251TObject* AliHFEcollection::Get(const char* name, Int_t X, Int_t Y){
252 //
253 // Get histogram from the 2D vector
254 // Parameters:
255 // name - Name of the vector
256 // X,Y - Indices of the histogram
257 //
258 TString hname = name;
259 hname.Append(Form("_[%d][%d]", X, Y));
260 if(!CheckObject(hname.Data())){
261 AliError("No such object found in the list");
262 AliError(Form("name: %s", hname.Data()));
263 return 0x0;
264 }
265 else{
266 return Get(hname.Data());
267 }
268}
269//___________________________________________________________________
270Bool_t AliHFEcollection::CheckObject(const char* name){
271 //
272 // check wheter the creation of the histogram was succesfull
273 //
274
275 if(!fListE){
276 AliError("No TList pointer ! ");
277 return kFALSE;
278 }
279
280 if(!fListE->FindObject(name)){
281 AliError("Creating or Finding the object failed");
282 return kFALSE;
283 }
284 return kTRUE;
285}
286//___________________________________________________________________
287TObject* AliHFEcollection::Get(const char* name){
288 //
289 // Get histogram with the required name
290 //
291 return fListE->FindObject(name);
292}
293//___________________________________________________________________
294Long64_t AliHFEcollection::Merge(TCollection *list){
295 //
296 // Merge the collections
297 //
298 if(!fListE){
299 AliError("AliHFEcollection::Merge : No TList pointer ! ");
300 return 0;
301 }
302
303 return fListE->Merge(list);
304
305}
306//____________________________________________________________________
307void AliHFEcollection::Browse(TBrowser *b)
308{
309 //
310 // Browse the content of the directory.
311 //
312
313 if (b) {
314 TObject *obj = 0;
315 TIter nextin(fListE);
316
317 //Add objects that are only in memory
318 while ((obj = nextin())) {
319 b->Add(obj, obj->GetName());
320 }
321 }
322}