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