0fcb0e8d079a2e5a99df883f8ac006b42c7f5626
[u/mrichter/AliRoot.git] / HBTAN / AliHBTNonId3DCorrFctn.cxx
1 #include "AliHBTNonId3DCorrFctn.h"
2 #include <TH1.h>
3 #include <Riostream.h>
4
5 ///////////////////////////////////////////////////////
6 //                                                   //
7 // AliHBTNonId3DCorrFctn.h                           //
8 //                                                   //
9 // Class for calculating 3D non-id correlation       //
10 // functions                                         //
11 //                                                   //
12 ///////////////////////////////////////////////////////
13
14 AliHBTNonId3DCorrFctn x;
15
16 ClassImp(AliHBTNonId3DCorrFctn)
17
18 AliHBTNonId3DCorrFctn::AliHBTNonId3DCorrFctn(const char* name, const char* title):
19  AliHBTOnePairFctn1D(name,title),
20  fNumOutP(0x0),
21  fDenOutP(0x0),
22  fRatOutP(0x0),
23  fNumOutN(0x0),
24  fDenOutN(0x0),
25  fRatOutN(0x0),
26  fRatOut(0x0),
27  fRatOutNOverP(0x0),
28  fNumSideP(0x0),
29  fDenSideP(0x0),
30  fRatSideP(0x0),
31  fNumSideN(0x0),
32  fDenSideN(0x0),
33  fRatSideN(0x0),
34  fRatSide(0x0),
35  fRatSideNOverP(0x0),
36  fNumLongP(0x0),
37  fDenLongP(0x0),
38  fRatLongP(0x0),
39  fNumLongN(0x0),
40  fDenLongN(0x0),
41  fRatLongN(0x0),
42  fRatLong(0x0),
43  fRatLongNOverP(0x0)
44 {
45 //ctor
46 }
47 /******************************************************************/
48 AliHBTNonId3DCorrFctn::AliHBTNonId3DCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
49  AliHBTOnePairFctn1D(name,title,nbins,maxXval,minXval),
50  fNumOutP(0x0),
51  fDenOutP(0x0),
52  fRatOutP(0x0),
53  fNumOutN(0x0),
54  fDenOutN(0x0),
55  fRatOutN(0x0),
56  fRatOut(0x0),
57  fRatOutNOverP(0x0),
58  fNumSideP(0x0),
59  fDenSideP(0x0),
60  fRatSideP(0x0),
61  fNumSideN(0x0),
62  fDenSideN(0x0),
63  fRatSideN(0x0),
64  fRatSide(0x0),
65  fRatSideNOverP(0x0),
66  fNumLongP(0x0),
67  fDenLongP(0x0),
68  fRatLongP(0x0),
69  fNumLongN(0x0),
70  fDenLongN(0x0),
71  fRatLongN(0x0),
72  fRatLong(0x0),
73  fRatLongNOverP(0x0)
74 {
75 //ctor
76 }
77
78 /******************************************************************/
79 AliHBTNonId3DCorrFctn::AliHBTNonId3DCorrFctn(const AliHBTNonId3DCorrFctn& in):
80  AliHBTOnePairFctn1D(in),
81  fNumOutP(0x0),
82  fDenOutP(0x0),
83  fRatOutP(0x0),
84  fNumOutN(0x0),
85  fDenOutN(0x0),
86  fRatOutN(0x0),
87  fRatOut(0x0),
88  fRatOutNOverP(0x0),
89  fNumSideP(0x0),
90  fDenSideP(0x0),
91  fRatSideP(0x0),
92  fNumSideN(0x0),
93  fDenSideN(0x0),
94  fRatSideN(0x0),
95  fRatSide(0x0),
96  fRatSideNOverP(0x0),
97  fNumLongP(0x0),
98  fDenLongP(0x0),
99  fRatLongP(0x0),
100  fNumLongN(0x0),
101  fDenLongN(0x0),
102  fRatLongN(0x0),
103  fRatLong(0x0),
104  fRatLongNOverP(0x0)
105 {
106 //ctor
107 }
108
109 /******************************************************************/
110
111 AliHBTNonId3DCorrFctn::~AliHBTNonId3DCorrFctn()
112 {
113  //dtor
114  delete fNumOutP;
115  delete fDenOutP;
116  delete fRatOutP;
117  delete fNumOutN;
118  delete fDenOutN;
119  delete fRatOutN;
120  delete fRatOut;
121  delete fRatOutNOverP;
122  delete fNumSideP;
123  delete fDenSideP;
124  delete fRatSideP;
125  delete fNumSideN;
126  delete fDenSideN;
127  delete fRatSideN;
128  delete fRatSide;
129  delete fRatSideNOverP;
130  delete fNumLongP;
131  delete fDenLongP;
132  delete fRatLongP;
133  delete fNumLongN;
134  delete fDenLongN;
135  delete fRatLongN;
136  delete fRatLong;
137  delete fRatLongNOverP;
138  
139 }
140
141 /******************************************************************/
142 void AliHBTNonId3DCorrFctn::WriteFunction()
143 {
144     
145  Double_t outPscale = Scale(fNumOutP,fDenOutP);
146  cout<<"outPscale = "<<outPscale<<endl;
147  fRatOutP->Divide(fNumOutP,fDenOutP,outPscale);
148
149  Double_t outNscale = Scale(fNumOutN,fDenOutN);
150  cout<<"outNscale = "<<outNscale<<endl;
151  fRatOutN->Divide(fNumOutN,fDenOutN,outNscale);
152
153  fRatOutNOverP->Divide(fRatOutN,fRatOutP);
154
155
156  Double_t sidePscale = Scale(fNumSideP,fDenSideP);
157  fRatSideP->Divide(fNumSideP,fDenSideP,sidePscale);
158
159  Double_t sideNscale = Scale(fNumSideN,fDenSideN);
160  fRatSideN->Divide(fNumSideN,fDenSideN,sideNscale);
161
162  fRatSideNOverP->Divide(fRatSideN,fRatSideP);
163
164
165  Double_t longPscale = Scale(fNumLongP,fDenLongP);
166  fRatLongP->Divide(fNumLongP,fDenLongP,longPscale);
167
168  Double_t longNscale = Scale(fNumLongN,fDenLongN);
169  fRatLongN->Divide(fNumLongN,fDenLongN,longNscale);
170
171  fRatLongNOverP->Divide(fRatLongN,fRatLongP);
172
173  fNumOutP->Write();
174  fDenOutP->Write();
175  fRatOutP->Write();
176  fNumOutN->Write();
177  fDenOutN->Write();
178  fRatOutN->Write();
179  fRatOut->Write();
180  fRatOutNOverP->Write();
181
182  fNumSideP->Write();
183  fDenSideP->Write();
184  fRatSideP->Write();
185  fNumSideN->Write();
186  fDenSideN->Write();
187  fRatSideN->Write();
188  fRatSide->Write();
189  fRatSideNOverP->Write();
190
191  fNumLongP->Write();
192  fDenLongP->Write();
193  fRatLongP->Write();
194  fNumLongN->Write();
195  fDenLongN->Write();
196  fRatLongN->Write();
197  fRatLong->Write();
198  fRatLongNOverP->Write();
199
200 }
201
202 //-------------------------------------
203 void AliHBTNonId3DCorrFctn::ProcessSameEventParticles(AliHBTPair* pair)
204 {
205     //Fills the numerator using pair from the same event
206     pair = CheckPair(pair);
207     if(pair == 0x0) return;
208  
209     double tKStar = TMath::Abs(pair->GetKStar());
210     double tKStarOut = pair->GetKStarOut();
211     double tKStarSide = pair->GetKStarSide();
212     double tKStarLong = pair->GetKStarLong();
213
214     if(tKStarOut>0.)
215     {
216         fNumOutP->Fill(tKStar);
217     }
218     else
219     {
220         fNumOutN->Fill(tKStar);
221     }
222
223     if(tKStarSide>0.)
224     {
225         fNumSideP->Fill(tKStar);
226     }
227     else
228     {
229         fNumSideN->Fill(tKStar);
230     }
231
232     if(tKStarLong>0.)
233     {
234         fNumLongP->Fill(tKStar);
235     }
236     else
237     {
238         fNumLongN->Fill(tKStar);
239     }
240 }
241
242 /****************************************************************/
243 void AliHBTNonId3DCorrFctn::Init()
244 {
245     AliHBTOnePairFctn1D::Init();
246  fNumOutP->Reset();
247  fDenOutP->Reset();
248  fRatOutP->Reset();
249  fNumOutN->Reset();
250  fDenOutN->Reset();
251  fRatOutN->Reset();
252  fRatOut->Reset();
253  fRatOutNOverP->Reset();
254
255  fNumSideP->Reset();
256  fDenSideP->Reset();
257  fRatSideP->Reset();
258  fNumSideN->Reset();
259  fDenSideN->Reset();
260  fRatSideN->Reset();
261  fRatSide->Reset();
262  fRatSideNOverP->Reset();
263
264  fNumLongP->Reset();
265  fDenLongP->Reset();
266  fRatLongP->Reset();
267  fNumLongN->Reset();
268  fDenLongN->Reset();
269  fRatLongN->Reset();
270  fRatLong->Reset();
271  fRatLongNOverP->Reset();
272 }
273 /****************************************************************/
274
275
276 void AliHBTNonId3DCorrFctn::ProcessDiffEventParticles(AliHBTPair* pair)
277 {
278
279     double tKStar = TMath::Abs(pair->GetKStar());
280     double tKStarOut = pair->GetKStarOut();
281     double tKStarSide = pair->GetKStarSide();
282     double tKStarLong = pair->GetKStarLong();
283
284     if(tKStarOut>0.)
285     {
286         fDenOutP->Fill(tKStar);
287     }
288     else
289     {
290         fDenOutN->Fill(tKStar);
291     }
292
293     if(tKStarSide>0.)
294     {
295         fDenSideP->Fill(tKStar);
296     }
297     else
298     {
299         fDenSideN->Fill(tKStar);
300     }
301
302     if(tKStarLong>0.)
303     {
304         fDenLongP->Fill(tKStar);
305     }
306     else
307     {
308         fDenLongN->Fill(tKStar);
309     }
310
311 }
312
313
314 /******************************************************************/
315
316 void AliHBTNonId3DCorrFctn::BuildHistos(Int_t nbins, Float_t max, Float_t min)
317 {
318     
319     AliHBTFunction1D::BuildHistos(nbins,max,min);
320     
321     TString nameNumOutP = "NumOutP";
322     TString nameDenOutP = "DenOutP";
323     TString nameRatOutP = "RatOutP";
324     TString nameNumOutN = "NumOutN";
325     TString nameDenOutN = "DenOutN";
326     TString nameRatOutN = "RatOutN";
327     TString nameRatOut =  "RatOut";
328     TString nameRatOutNOverP = "RatOutNOverP";
329     TString nameNumSideP = "NumSideP";
330     TString nameDenSideP = "DenSideP";
331     TString nameRatSideP = "RatSideP";
332     TString nameNumSideN = "NumSideN";
333     TString nameDenSideN = "DenSideN";
334     TString nameRatSideN = "RatSideN";
335     TString nameRatSide = "RatSide";
336     TString nameRatSideNOverP = "RatSideNOverP";
337     TString nameNumLongP = "NumLongP";
338     TString nameDenLongP = "DenLongP";
339     TString nameRatLongP = "RatLongP";
340     TString nameNumLongN = "NumLongN";
341     TString nameDenLongN = "DenLongN";
342     TString nameRatLongN = "RatLongN";
343     TString nameRatLong = "RatLong";
344     TString nameRatLongNOverP = "RatLongNOverP";
345
346     fNumOutP = new TH1D(nameNumOutP.Data(),nameNumOutP.Data(),nbins,min,max);
347     fDenOutP = new TH1D(nameDenOutP.Data(),nameDenOutP.Data(),nbins,min,max);
348     fRatOutP = new TH1D(nameRatOutP.Data(),nameRatOutP.Data(),nbins,min,max);
349
350     fNumOutN = new TH1D(nameNumOutN.Data(),nameNumOutN.Data(),nbins,min,max);
351     fDenOutN = new TH1D(nameDenOutN.Data(),nameDenOutN.Data(),nbins,min,max);
352     fRatOutN = new TH1D(nameRatOutN.Data(),nameRatOutN.Data(),nbins,min,max);
353
354     fRatOut = new TH1D(nameRatOut.Data(),nameRatOut.Data(),nbins,min,max);
355     fRatOutNOverP = new TH1D(nameRatOutNOverP.Data(),nameRatOutNOverP.Data(),nbins,min,max);
356
357     fNumSideP = new TH1D(nameNumSideP.Data(),nameNumSideP.Data(),nbins,min,max);
358     fDenSideP = new TH1D(nameDenSideP.Data(),nameDenSideP.Data(),nbins,min,max);
359     fRatSideP = new TH1D(nameRatSideP.Data(),nameRatSideP.Data(),nbins,min,max);
360
361     fNumSideN = new TH1D(nameNumSideN.Data(),nameNumSideN.Data(),nbins,min,max);
362     fDenSideN = new TH1D(nameDenSideN.Data(),nameDenSideN.Data(),nbins,min,max);
363     fRatSideN = new TH1D(nameRatSideN.Data(),nameRatSideN.Data(),nbins,min,max);
364
365     fRatSide = new TH1D(nameRatSide.Data(),nameRatSide.Data(),nbins,min,max);
366     fRatSideNOverP = new TH1D(nameRatSideNOverP.Data(),nameRatSideNOverP.Data(),nbins,min,max);
367
368     fNumLongP = new TH1D(nameNumLongP.Data(),nameNumLongP.Data(),nbins,min,max);
369     fDenLongP = new TH1D(nameDenLongP.Data(),nameDenLongP.Data(),nbins,min,max);
370     fRatLongP = new TH1D(nameRatLongP.Data(),nameRatLongP.Data(),nbins,min,max);
371
372     fNumLongN = new TH1D(nameNumLongN.Data(),nameNumLongN.Data(),nbins,min,max);
373     fDenLongN = new TH1D(nameDenLongN.Data(),nameDenLongN.Data(),nbins,min,max);
374     fRatLongN = new TH1D(nameRatLongN.Data(),nameRatLongN.Data(),nbins,min,max);
375
376     fRatLong = new TH1D(nameRatLong.Data(),nameRatLong.Data(),nbins,min,max);
377     fRatLongNOverP = new TH1D(nameRatLongNOverP.Data(),nameRatLongNOverP.Data(),nbins,min,max);
378
379
380     fNumOutP->Sumw2();
381     fDenOutP->Sumw2();
382     fRatOutP->Sumw2();
383     fNumOutN->Sumw2();
384     fDenOutN->Sumw2();
385     fRatOutN->Sumw2();
386     fRatOut->Sumw2();
387     fRatOutNOverP->Sumw2();
388     fNumSideP->Sumw2();
389     fDenSideP->Sumw2();
390     fRatSideP->Sumw2();
391     fNumSideN->Sumw2();
392     fDenSideN->Sumw2();
393     fRatSideN->Sumw2();
394     fRatSide->Sumw2();
395     fRatSideNOverP->Sumw2();
396     fNumLongP->Sumw2();
397     fDenLongP->Sumw2();
398     fRatLongP->Sumw2();
399     fNumLongN->Sumw2();
400     fDenLongN->Sumw2();
401     fRatLongN->Sumw2();
402     fRatLong->Sumw2();
403     fRatLongNOverP->Sumw2();
404 }
405
406  TH1* AliHBTNonId3DCorrFctn::GetResult()
407  {
408      return fRatOutN;
409  }