1 #include "AliHBTasCorrFctn.h"
6 ///////////////////////////////////////////////////////
8 // AliHBTasCorrFctn.h //
10 // Class for calculating 3D as correlation //
13 ///////////////////////////////////////////////////////
15 ClassImp(AliHBTasCorrFctn)
17 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title):
18 AliHBTOnePairFctn1D(name,title),
28 /******************************************************************/
29 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
30 AliHBTOnePairFctn1D(name,title,nbins,maxXval,minXval),
33 fNum(new TObjArray()),
34 fDen(new TObjArray()),
37 SetParams(nbins,maxXval, minXval);
40 /******************************************************************/
41 AliHBTasCorrFctn::AliHBTasCorrFctn(const AliHBTasCorrFctn& in):
42 AliHBTOnePairFctn1D(in),
46 fNum((in.fNum)?(TObjArray*)in.fNum->Clone():0x0),
47 fDen((in.fDen)?(TObjArray*)in.fDen->Clone():0x0),
48 fRat((in.fRat)?(TObjArray*)in.fRat->Clone():0x0)
53 /******************************************************************/
55 AliHBTasCorrFctn::~AliHBTasCorrFctn()
65 /******************************************************************/
66 void AliHBTasCorrFctn::Write()
70 // Int_t n=GetNumberOfIntervals();
73 for(i=0;i<fNumberOfIntervals;i++){
74 TH1D *num = ((TH1D*)fNum->At(i));
75 TH1D *den = ((TH1D*)fDen->At(i));
76 TH1D &rat = *((TH1D*)fRat->At(i));
77 scale = Scale(num,den);
78 Info("Write():","Scale in interval %d = %lf",i,scale);
79 rat.Divide(num,den,scale);
89 //-------------------------------------
90 void AliHBTasCorrFctn::ProcessSameEventParticles(AliHBTPair* pair)
92 //Fills the numerator using pair from the same event
93 pair = CheckPair(pair);
94 if(pair == 0x0) return;
95 // int n = GetNumberOfIntervals();
96 int n = fNumberOfIntervals;
97 Double_t rplane=0.; //reaction plane angle - 2 B determined
98 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
99 phi=phi*360/(2*TMath::Pi());
100 Double_t q=GetValue(pair);
102 ntv = (int)(phi*n/(360.));
104 TH1D *num = ((TH1D*)fNum->At(ntv));
110 /****************************************************************/
111 void AliHBTasCorrFctn::Init()
115 /****************************************************************/
118 void AliHBTasCorrFctn::ProcessDiffEventParticles(AliHBTPair* pair)
121 Double_t rplane=0.; //reaction plane angle - 2 B determined
122 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
123 phi=phi*360/(2*TMath::Pi());
124 Double_t qout=GetValue(pair);
126 // int n=GetNumberOfIntervals();
127 int n = fNumberOfIntervals;
130 ntv = (int)(phi*n/(360.));
132 TH1D &den = *((TH1D*)fDen->At(ntv));
139 /******************************************************************/
142 void AliHBTasCorrFctn::SetParams(Int_t nbins, Float_t maxXval, Float_t minXval){
147 TH1* AliHBTasCorrFctn::GetResult()
150 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
156 ClassImp(AliHBTQOutasCorrFctn)
158 AliHBTQOutasCorrFctn::AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
159 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
165 void AliHBTQOutasCorrFctn::BuildHistos()
169 int n=GetNumberOfIntervals();
171 int nbins=Getnbins();
173 double max = GetmaxXval();
174 double min = GetminXval();
183 TString nameNum = "NumOut";
184 TString nameDen = "DenOut";
185 TString nameRat = "RatOut";
189 sprintf(buff,"%d",i);
191 nameNum +=TString(buff);
193 nameDen +=TString(buff);
194 nameRat +=TString(buff);
197 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
198 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
199 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
213 nameNum = TString("NumOut");
214 nameDen = TString("DenOut");
215 nameRat = TString("RatOut");
222 ClassImp(AliHBTQSideasCorrFctn)
224 AliHBTQSideasCorrFctn::AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
225 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
231 void AliHBTQSideasCorrFctn::BuildHistos()
235 int n=GetNumberOfIntervals();
236 int nbins=Getnbins();
238 double max = GetmaxXval();
239 double min = GetminXval();
248 TString nameNum = "NumSide";
249 TString nameDen = "DenSide";
250 TString nameRat = "RatSide";
254 sprintf(buff,"%d",i);
256 nameNum +=TString(buff);
258 nameDen +=TString(buff);
259 nameRat +=TString(buff);
262 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
263 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
264 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
278 nameNum = TString("NumSide");
279 nameDen = TString("DenSide");
280 nameRat = TString("RatSide");
287 ClassImp(AliHBTQLongasCorrFctn)
289 AliHBTQLongasCorrFctn::AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
290 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
296 void AliHBTQLongasCorrFctn::BuildHistos()
300 int n=GetNumberOfIntervals();
301 int nbins=Getnbins();
303 double max = GetmaxXval();
304 double min = GetminXval();
313 TString nameNum = "NumLong";
314 TString nameDen = "DenLong";
315 TString nameRat = "RatLong";
319 sprintf(buff,"%d",i);
321 nameNum +=TString(buff);
323 nameDen +=TString(buff);
324 nameRat +=TString(buff);
327 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
328 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
329 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
343 nameNum = TString("NumLong");
344 nameDen = TString("DenLong");
345 nameRat = TString("RatLong");