1 #include "AliHBTasCorrFctn.h"
5 ///////////////////////////////////////////////////////
7 // AliHBTasCorrFctn.h //
9 // Class for calculating 3D as correlation //
12 ///////////////////////////////////////////////////////
14 ClassImp(AliHBTasCorrFctn)
16 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title):
17 AliHBTOnePairFctn1D(name,title),
27 /******************************************************************/
28 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
29 AliHBTOnePairFctn1D(name,title,nbins,maxXval,minXval),
32 fNum(new TObjArray()),
33 fDen(new TObjArray()),
36 SetParams(nbins,maxXval, minXval);
39 /******************************************************************/
40 AliHBTasCorrFctn::AliHBTasCorrFctn(const AliHBTasCorrFctn& in):
41 AliHBTOnePairFctn1D(in),
45 fNum((in.fNum)?(TObjArray*)in.fNum->Clone():0x0),
46 fDen((in.fDen)?(TObjArray*)in.fDen->Clone():0x0),
47 fRat((in.fRat)?(TObjArray*)in.fRat->Clone():0x0)
52 /******************************************************************/
54 AliHBTasCorrFctn::~AliHBTasCorrFctn()
64 /******************************************************************/
65 void AliHBTasCorrFctn::Write()
69 // Int_t n=GetNumberOfIntervals();
72 for(i=0;i<fNumberOfIntervals;i++){
73 TH1D *num = ((TH1D*)fNum->At(i));
74 TH1D *den = ((TH1D*)fDen->At(i));
75 TH1D &rat = *((TH1D*)fRat->At(i));
76 scale = Scale(num,den);
77 Info("Write():","Scale in interval %d = %lf",i,scale);
78 rat.Divide(num,den,scale);
88 //-------------------------------------
89 void AliHBTasCorrFctn::ProcessSameEventParticles(AliHBTPair* pair)
91 //Fills the numerator using pair from the same event
92 pair = CheckPair(pair);
93 if(pair == 0x0) return;
94 // int n = GetNumberOfIntervals();
95 int n = fNumberOfIntervals;
96 Double_t rplane=0.; //reaction plane angle - 2 B determined
97 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
98 phi=phi*360/(2*TMath::Pi());
99 Double_t q=GetValue(pair);
101 ntv = (int)(phi*n/(360.));
103 TH1D *num = ((TH1D*)fNum->At(ntv));
109 /****************************************************************/
110 void AliHBTasCorrFctn::Init()
114 /****************************************************************/
117 void AliHBTasCorrFctn::ProcessDiffEventParticles(AliHBTPair* pair)
119 //fills denumerator with data from different events
120 Double_t rplane=0.; //reaction plane angle - 2 B determined
121 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
122 phi=phi*360/(2*TMath::Pi());
123 Double_t qout=GetValue(pair);
125 // int n=GetNumberOfIntervals();
126 int n = fNumberOfIntervals;
129 ntv = (int)(phi*n/(360.));
131 TH1D &den = *((TH1D*)fDen->At(ntv));
138 /******************************************************************/
141 void AliHBTasCorrFctn::SetParams(Int_t nbins, Float_t maxXval, Float_t minXval)
143 //sets parameters for histograms
148 TH1* AliHBTasCorrFctn::GetResult()
150 //does nothing, it can as well have nothing inside, its just for class to work normally
151 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
157 ClassImp(AliHBTQOutasCorrFctn)
159 AliHBTQOutasCorrFctn::AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
160 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
166 void AliHBTQOutasCorrFctn::BuildHistos()
170 int n=GetNumberOfIntervals();
172 int nbins=Getnbins();
174 double max = GetmaxXval();
175 double min = GetminXval();
184 TString nameNum = "NumOut";
185 TString nameDen = "DenOut";
186 TString nameRat = "RatOut";
190 sprintf(buff,"%d",i);
192 nameNum +=TString(buff);
194 nameDen +=TString(buff);
195 nameRat +=TString(buff);
198 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
199 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
200 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
214 nameNum = TString("NumOut");
215 nameDen = TString("DenOut");
216 nameRat = TString("RatOut");
223 ClassImp(AliHBTQSideasCorrFctn)
225 AliHBTQSideasCorrFctn::AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
226 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
232 void AliHBTQSideasCorrFctn::BuildHistos()
236 int n=GetNumberOfIntervals();
237 int nbins=Getnbins();
239 double max = GetmaxXval();
240 double min = GetminXval();
249 TString nameNum = "NumSide";
250 TString nameDen = "DenSide";
251 TString nameRat = "RatSide";
255 sprintf(buff,"%d",i);
257 nameNum +=TString(buff);
259 nameDen +=TString(buff);
260 nameRat +=TString(buff);
263 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
264 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
265 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
279 nameNum = TString("NumSide");
280 nameDen = TString("DenSide");
281 nameRat = TString("RatSide");
288 ClassImp(AliHBTQLongasCorrFctn)
290 AliHBTQLongasCorrFctn::AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
291 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
297 void AliHBTQLongasCorrFctn::BuildHistos()
301 int n=GetNumberOfIntervals();
302 int nbins=Getnbins();
304 double max = GetmaxXval();
305 double min = GetminXval();
314 TString nameNum = "NumLong";
315 TString nameDen = "DenLong";
316 TString nameRat = "RatLong";
320 sprintf(buff,"%d",i);
322 nameNum +=TString(buff);
324 nameDen +=TString(buff);
325 nameRat +=TString(buff);
328 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
329 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
330 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
344 nameNum = TString("NumLong");
345 nameDen = TString("DenLong");
346 nameRat = TString("RatLong");