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)
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){
146 TH1* AliHBTasCorrFctn::GetResult()
149 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
155 ClassImp(AliHBTQOutasCorrFctn)
157 AliHBTQOutasCorrFctn::AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
158 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
164 void AliHBTQOutasCorrFctn::BuildHistos()
168 int n=GetNumberOfIntervals();
170 int nbins=Getnbins();
172 double max = GetmaxXval();
173 double min = GetminXval();
182 TString nameNum = "NumOut";
183 TString nameDen = "DenOut";
184 TString nameRat = "RatOut";
188 sprintf(buff,"%d",i);
190 nameNum +=TString(buff);
192 nameDen +=TString(buff);
193 nameRat +=TString(buff);
196 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
197 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
198 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
212 nameNum = TString("NumOut");
213 nameDen = TString("DenOut");
214 nameRat = TString("RatOut");
221 ClassImp(AliHBTQSideasCorrFctn)
223 AliHBTQSideasCorrFctn::AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
224 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
230 void AliHBTQSideasCorrFctn::BuildHistos()
234 int n=GetNumberOfIntervals();
235 int nbins=Getnbins();
237 double max = GetmaxXval();
238 double min = GetminXval();
247 TString nameNum = "NumSide";
248 TString nameDen = "DenSide";
249 TString nameRat = "RatSide";
253 sprintf(buff,"%d",i);
255 nameNum +=TString(buff);
257 nameDen +=TString(buff);
258 nameRat +=TString(buff);
261 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
262 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
263 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
277 nameNum = TString("NumSide");
278 nameDen = TString("DenSide");
279 nameRat = TString("RatSide");
286 ClassImp(AliHBTQLongasCorrFctn)
288 AliHBTQLongasCorrFctn::AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
289 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
295 void AliHBTQLongasCorrFctn::BuildHistos()
299 int n=GetNumberOfIntervals();
300 int nbins=Getnbins();
302 double max = GetmaxXval();
303 double min = GetminXval();
312 TString nameNum = "NumLong";
313 TString nameDen = "DenLong";
314 TString nameRat = "RatLong";
318 sprintf(buff,"%d",i);
320 nameNum +=TString(buff);
322 nameDen +=TString(buff);
323 nameRat +=TString(buff);
326 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
327 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
328 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
342 nameNum = TString("NumLong");
343 nameDen = TString("DenLong");
344 nameRat = TString("RatLong");