1 #include "AliHBTWeightasCorrFctn.h"
5 ///////////////////////////////////////////////////////
7 // AliHBTWeightasCorrFctn.h //
9 // Class for calculating 3D Weightas correlation //
12 ///////////////////////////////////////////////////////
14 ClassImp(AliHBTWeightasCorrFctn)
16 AliHBTWeightasCorrFctn::AliHBTWeightasCorrFctn(const char* name, const char* title):
17 AliHBTTwoPairFctn1D(name,title),
27 /******************************************************************/
28 AliHBTWeightasCorrFctn::AliHBTWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
29 AliHBTTwoPairFctn1D(name,title,nbins,maxXval,minXval),
32 fNum(new TObjArray()),
33 fDen(new TObjArray()),
36 SetParams(nbins,maxXval, minXval);
39 /******************************************************************/
40 AliHBTWeightasCorrFctn::AliHBTWeightasCorrFctn(const AliHBTWeightasCorrFctn& in):
41 AliHBTTwoPairFctn1D(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 AliHBTWeightasCorrFctn::~AliHBTWeightasCorrFctn()
64 /******************************************************************/
65 void AliHBTWeightasCorrFctn::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 AliHBTWeightasCorrFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
91 //Fills the numerator using pair from the same event
92 trackpair = CheckPair(trackpair);
93 if(partpair == 0x0) return;
94 if(trackpair == 0x0) return;
96 Double_t weight = 1.0;
98 int n = fNumberOfIntervals;
99 Double_t rplane=0.; //reaction plane angle - 2 B determined
100 Double_t phi=(trackpair->Particle1()->Phi()+trackpair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
102 phi=phi*360/(2*TMath::Pi());
103 Double_t q=GetValue(trackpair, partpair);
105 ntv = (int)(phi*n/(360.));
107 TH1D *num = ((TH1D*)fNum->At(ntv));
110 if ( trackpair && partpair)
112 if ( ( trackpair->Particle1()->GetPdgCode() == partpair->Particle1()->GetPdgCode()) &&
113 ( trackpair->Particle2()->GetPdgCode() == partpair->Particle2()->GetPdgCode()) )
115 weight=partpair->GetWeight();
116 // Info("ProcessSameEvent","weight=%lf",weight);
122 /****************************************************************/
123 void AliHBTWeightasCorrFctn::Init()
127 /****************************************************************/
130 void AliHBTWeightasCorrFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
133 Double_t rplane=0.; //reaction plane angle - 2 B determined
134 Double_t phi=(trackpair->Particle1()->Phi()+trackpair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
135 phi=phi*360/(2*TMath::Pi());
136 Double_t qout=GetValue(trackpair, partpair);
138 int n = fNumberOfIntervals;
141 ntv = (int)(phi*n/(360.));
143 TH1D &den = *((TH1D*)fDen->At(ntv));
144 if ( trackpair && partpair)
151 /******************************************************************/
154 void AliHBTWeightasCorrFctn::SetParams(Int_t nbins, Float_t maxXval, Float_t minXval){
159 TH1* AliHBTWeightasCorrFctn::GetResult()
162 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
169 ClassImp(AliHBTQOutWeightasCorrFctn)
171 AliHBTQOutWeightasCorrFctn::AliHBTQOutWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
172 AliHBTWeightasCorrFctn(name,title,nbins,maxXval,minXval)
178 void AliHBTQOutWeightasCorrFctn::BuildHistos()
182 int n=GetNumberOfIntervals();
184 int nbins=Getnbins();
186 double max = GetmaxXval();
187 double min = GetminXval();
196 TString nameNum = "NumOut";
197 TString nameDen = "DenOut";
198 TString nameRat = "RatOut";
202 sprintf(buff,"%d",i);
204 nameNum +=TString(buff);
206 nameDen +=TString(buff);
207 nameRat +=TString(buff);
210 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
211 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
212 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
226 nameNum = TString("NumOut");
227 nameDen = TString("DenOut");
228 nameRat = TString("RatOut");
235 ClassImp(AliHBTQSideWeightasCorrFctn)
237 AliHBTQSideWeightasCorrFctn::AliHBTQSideWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
238 AliHBTWeightasCorrFctn(name,title,nbins,maxXval,minXval)
244 void AliHBTQSideWeightasCorrFctn::BuildHistos()
248 int n=GetNumberOfIntervals();
249 int nbins=Getnbins();
251 double max = GetmaxXval();
252 double min = GetminXval();
261 TString nameNum = "NumSide";
262 TString nameDen = "DenSide";
263 TString nameRat = "RatSide";
267 sprintf(buff,"%d",i);
269 nameNum +=TString(buff);
271 nameDen +=TString(buff);
272 nameRat +=TString(buff);
275 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
276 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
277 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
291 nameNum = TString("NumSide");
292 nameDen = TString("DenSide");
293 nameRat = TString("RatSide");
300 ClassImp(AliHBTQLongWeightasCorrFctn)
302 AliHBTQLongWeightasCorrFctn::AliHBTQLongWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
303 AliHBTWeightasCorrFctn(name,title,nbins,maxXval,minXval)
309 void AliHBTQLongWeightasCorrFctn::BuildHistos()
313 int n=GetNumberOfIntervals();
314 int nbins=Getnbins();
316 double max = GetmaxXval();
317 double min = GetminXval();
326 TString nameNum = "NumLong";
327 TString nameDen = "DenLong";
328 TString nameRat = "RatLong";
332 sprintf(buff,"%d",i);
334 nameNum +=TString(buff);
336 nameDen +=TString(buff);
337 nameRat +=TString(buff);
340 Num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
341 Den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
342 Rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
356 nameNum = TString("NumLong");
357 nameDen = TString("DenLong");
358 nameRat = TString("RatLong");