This commit was generated by cvs2svn to compensate for changes in r4472,
[u/mrichter/AliRoot.git] / HBTAN / AliHBTFunction.cxx
CommitLineData
1b446896 1#include "AliHBTFunction.h"
2/******************************************************************/
3/*
4Piotr Krzysztof Skowronski
5Piotr.Skowronski@cern.ch
6Base classes for HBT functions
7
8 function
9 / \
10 / \
11 / \
12 / \
13 / \
14 / \
15 / \
16 two part four part
17 / | \ / | \
18 / | \ / | \
19 1D 2D 3D 1D 2D 3D
20
21 four particle functions are intendent to be resolution functions:
22 it is mecessary to have simulated particle pair corresponding to given
23 recontructed track pair in order to calculate function simualted value
24 and recontructed value to be further histogrammed
25
26*/
27/******************************************************************/
28/******************************************************************/
29
30ClassImp( AliHBTFunction )
31
32AliHBTFunction::AliHBTFunction()
33{
34
35 fPairCut = new AliHBTEmptyPairCut(); //dummy cut
36}
37
38void AliHBTFunction::
39Write()
40 {
41 if (GetNumerator()) GetNumerator()->Write();
42 if (GetDenominator()) GetDenominator()->Write();
43 TH1* res = GetResult();
44 if (res) GetResult()->Write();
45 }
46/******************************************************************/
47
48TH1* AliHBTFunction::
49GetRatio(Double_t normfactor)
50 {
51 TString str = fName + " ratio";
52 TH1 *result = (TH1*)GetNumerator()->Clone(str.Data());
53
54 result->SetTitle(str.Data());
55 result->Sumw2();
56
57 result->Divide(GetNumerator(),GetDenominator(),normfactor);
58
59 return result;
60
61 }
62/******************************************************************/
63void AliHBTFunction::SetPairCut(AliHBTPairCut* cut)
64{
65//Sets new Pair Cut. Old one is deleted
66//Note that it is created new object instead of simple pointer set
67//I do not want to have pointer
68//to object created somewhere else
69//because in that case I could not believe that
70//it would always exist (sb could delete it)
71//so we have always own copy
72
73 if(!cut)
74 {
75 Error("AliHBTFunction::SetPairCut","argument is NULL");
76 return;
77 }
78 delete fPairCut;
79 fPairCut = (AliHBTPairCut*)cut->Clone();
80
81}
82
83/******************************************************************/
84
85void AliHBTFunction::
86Rename(const Char_t * name)
87 {
88 //renames the function and histograms
89 SetName(name);
90 SetTitle(name);
91
92 TString numstr = fName + " Numerator"; //title and name of the
93 //numerator histogram
94 TString denstr = fName + " Denominator";//title and name of the
95 //denominator histogram
96
97 GetNumerator()->SetName(numstr.Data());
98 GetNumerator()->SetTitle(numstr.Data());
99
100 GetDenominator()->SetName(denstr.Data());
101 GetDenominator()->SetTitle(denstr.Data());
102
103 }
104
105void AliHBTFunction::
106Rename(const Char_t * name, const Char_t * title)
107 {
108 //renames and retitle the function and histograms
109
110 SetName(name);
111 SetTitle(title);
112
113 TString numstrn = fName + " Numerator"; //name of the
114 //numerator histogram
115
116 TString numstrt = fTitle + " Numerator"; //title of the
117 //numerator histogram
118
119 TString denstrn = fName + " Denominator";//name of the
120 //denominator histogram
121
122 TString denstrt = fTitle + " Denominator";//title of the
123 //denominator histogram
124
125
126 GetNumerator()->SetName(numstrn.Data());
127 GetNumerator()->SetTitle(numstrt.Data());
128
129 GetDenominator()->SetName(denstrn.Data());
130 GetDenominator()->SetTitle(denstrt.Data());
131
132
133 }
134
135/******************************************************************/
136/******************************************************************/
137/******************************************************************/
138
139ClassImp( AliHBTTwoPartFctn )
140
141/******************************************************************/
142/******************************************************************/
143/******************************************************************/
144
145ClassImp( AliHBTFourPartFctn)
146
147/******************************************************************/
148/******************************************************************/
149/******************************************************************/
150
151ClassImp( AliHBTTwoPartFctn1D )
152
153AliHBTTwoPartFctn1D::
154AliHBTTwoPartFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
155 {
156 //Constructor of Two Part One Dimentional Function
157 // nbins: number of bins in histograms - default 100
158 // maxXval and minXval: range of histgram(s) default 0 - 0.15 (GeV)
159
160
161 TString numstr = fName + " Numerator"; //title and name of the
162 //numerator histogram
163 TString denstr = fName + " Denominator";//title and name of the
164 //denominator histogram
165
166 fNumerator = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
167 fDenominator = new TH1D(denstr.Data(),denstr.Data(),nbins,minXval,maxXval);
168
169 fNumerator->Sumw2();
170 fDenominator->Sumw2();
171
172 }
173/******************************************************************/
174AliHBTTwoPartFctn1D::~AliHBTTwoPartFctn1D()
175{
176 delete fNumerator;
177 delete fDenominator;
178}
179/******************************************************************/
180/******************************************************************/
181/******************************************************************/
182
183ClassImp( AliHBTTwoPartFctn2D )
184
185AliHBTTwoPartFctn2D::
186AliHBTTwoPartFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
187 Int_t nYbins, Double_t maxYval, Double_t minYval)
188
189{
190 TString numstr = fName + " Numerator"; //title and name of the
191 //numerator histogram
192 TString denstr = fName + " Denominator";//title and name of the
193 //denominator histogram
194
195 fNumerator = new TH2D(numstr.Data(),numstr.Data(),
196 nXbins,minXval,maxXval,
197 nYbins,minYval,maxYval);
198
199 fDenominator = new TH2D(denstr.Data(),denstr.Data(),
200 nXbins,minXval,maxXval,
201 nYbins,minYval,maxYval);
202
203 fNumerator->Sumw2();
204 fDenominator->Sumw2();
205
206}
207AliHBTTwoPartFctn2D::~AliHBTTwoPartFctn2D()
208{
209 delete fNumerator;
210 delete fDenominator;
211}
212void AliHBTTwoPartFctn2D::ProcessSameEventParticles(AliHBTPair* pair)
213{
214 pair = CheckPair(pair);
215 if(pair)
216 {
217 Double_t x,y;
218 GetValues(pair,x,y);
219 fNumerator->Fill(y,x);
220 }
221}
222
223void AliHBTTwoPartFctn2D::ProcessDiffEventParticles(AliHBTPair* pair)
224{
225 pair = CheckPair(pair);
226 if(pair)
227 {
228 Double_t x,y;
229 GetValues(pair,x,y);
230 fDenominator->Fill(y,x);
231 }
232
233}
234
235
236/******************************************************************/
237/******************************************************************/
238/******************************************************************/
239
240ClassImp( AliHBTTwoPartFctn3D)
241
242AliHBTTwoPartFctn3D::
243AliHBTTwoPartFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
244 Int_t nYbins, Double_t maxYval, Double_t minYval,
245 Int_t nZbins, Double_t maxZval, Double_t minZval)
246
247{
248 TString numstr = fName + " Numerator"; //title and name of the
249 //numerator histogram
250 TString denstr = fName + " Denominator";//title and name of the
251 //denominator histogram
252
253 fNumerator = new TH3D(numstr.Data(),numstr.Data(),
254 nXbins,minXval,maxXval,
255 nYbins,minYval,maxYval,
256 nZbins,minZval,maxZval);
257
258 fDenominator = new TH3D(denstr.Data(),denstr.Data(),
259 nXbins,minXval,maxXval,
260 nYbins,minYval,maxYval,
261 nZbins,minZval,maxZval);
262
263 fNumerator->Sumw2();
264 fDenominator->Sumw2();
265
266}
267
268
269AliHBTTwoPartFctn3D::~AliHBTTwoPartFctn3D()
270{
271 delete fNumerator;
272 delete fDenominator;
273}
274
275
276/******************************************************************/
277/******************************************************************/
278/******************************************************************/
279ClassImp( AliHBTFourPartFctn2D)
280
281
282AliHBTFourPartFctn2D::
283AliHBTFourPartFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
284 Int_t nYbins, Double_t maxYval, Double_t minYval)
285
286{
287 TString numstr = fName + " Numerator"; //title and name of the
288 //numerator histogram
289 TString denstr = fName + " Denominator";//title and name of the
290 //denominator histogram
291
292 fNumerator = new TH2D(numstr.Data(),numstr.Data(),
293 nXbins,minXval,maxXval,
294 nYbins,minYval,maxYval);
295
296 fDenominator = new TH2D(denstr.Data(),denstr.Data(),
297 nXbins,minXval,maxXval,
298 nYbins,minYval,maxYval);
299
300 fNumerator->Sumw2();
301 fDenominator->Sumw2();
302
303}
304AliHBTFourPartFctn2D::~AliHBTFourPartFctn2D()
305{
306 delete fNumerator;
307 delete fDenominator;
308}
309void AliHBTFourPartFctn2D::
310ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
311{
312 partpair = CheckPair(partpair);
313 trackpair = CheckPair(trackpair);
314 if( partpair && trackpair)
315 {
316 Double_t x,y;
317 GetValues(trackpair,partpair,x,y);
318 fNumerator->Fill(y,x);
319 }
320}
321
322void AliHBTFourPartFctn2D::
323ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
324{
325 partpair = CheckPair(partpair);
326 trackpair = CheckPair(trackpair);
327 if( partpair && trackpair)
328 {
329 Double_t x,y;
330 GetValues(trackpair,partpair,x,y);
331 fDenominator->Fill(y,x);
332 }
333
334}
335