1 /**************************************************************************
2 * Copyright(c) 1998-2002, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 #include <TObjArray.h>
20 #include <Riostream.h>
22 #include "AliHBTasCorrFctn.h"
24 ///////////////////////////////////////////////////////
26 // AliHBTasCorrFctn.h //
28 // Class for calculating 3D as correlation //
31 ///////////////////////////////////////////////////////
33 ClassImp(AliHBTasCorrFctn)
35 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title):
36 AliHBTOnePairFctn1D(name,title),
42 fNumberOfIntervals(0),
50 /******************************************************************/
51 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
52 AliHBTOnePairFctn1D(name,title,nbins,maxXval,minXval),
55 fNum(new TObjArray()),
56 fDen(new TObjArray()),
57 fRat(new TObjArray()),
59 fNumberOfIntervals(0),
63 SetParams(nbins,maxXval, minXval);
66 /******************************************************************/
67 AliHBTasCorrFctn::AliHBTasCorrFctn(const AliHBTasCorrFctn& in):
68 AliHBTOnePairFctn1D(in),
72 fNum((in.fNum)?(TObjArray*)in.fNum->Clone():0x0),
73 fDen((in.fDen)?(TObjArray*)in.fDen->Clone():0x0),
74 fRat((in.fRat)?(TObjArray*)in.fRat->Clone():0x0),
76 fNumberOfIntervals(in.fNumberOfIntervals),
77 fmaxXval(in.fmaxXval),
84 /******************************************************************/
86 AliHBTasCorrFctn::~AliHBTasCorrFctn()
96 /******************************************************************/
97 Int_t AliHBTasCorrFctn::Write(const char*,Int_t, Int_t)
101 // Int_t n=GetNumberOfIntervals();
104 for(i=0;i<fNumberOfIntervals;i++){
105 TH1D *num = ((TH1D*)fNum->At(i));
106 TH1D *den = ((TH1D*)fDen->At(i));
107 TH1D &rat = *((TH1D*)fRat->At(i));
108 scale = Scale(num,den);
109 Info("Write():","Scale in interval %d = %lf",i,scale);
110 rat.Divide(num,den,scale);
120 //-------------------------------------
121 void AliHBTasCorrFctn::ProcessSameEventParticles(AliHBTPair* pair)
123 //Fills the numerator using pair from the same event
124 pair = CheckPair(pair);
125 if(pair == 0x0) return;
126 // int n = GetNumberOfIntervals();
127 int n = fNumberOfIntervals;
128 Double_t rplane=0.; //reaction plane angle - 2 B determined
129 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
130 phi=phi*360/(2*TMath::Pi());
131 Double_t q=GetValue(pair);
133 ntv = (int)(phi*n/(360.));
135 TH1D *num = ((TH1D*)fNum->At(ntv));
141 /****************************************************************/
142 void AliHBTasCorrFctn::Init()
146 /****************************************************************/
149 void AliHBTasCorrFctn::ProcessDiffEventParticles(AliHBTPair* pair)
151 //fills denumerator with data from different events
152 Double_t rplane=0.; //reaction plane angle - 2 B determined
153 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
154 phi=phi*360/(2*TMath::Pi());
155 Double_t qout=GetValue(pair);
157 // int n=GetNumberOfIntervals();
158 int n = fNumberOfIntervals;
161 ntv = (int)(phi*n/(360.));
163 TH1D &den = *((TH1D*)fDen->At(ntv));
170 /******************************************************************/
173 void AliHBTasCorrFctn::SetParams(Int_t nbins, Float_t maxXval, Float_t minXval)
175 //sets parameters for histograms
180 TH1* AliHBTasCorrFctn::GetResult()
182 //does nothing, it can as well have nothing inside, its just for class to work normally
183 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
189 ClassImp(AliHBTQOutasCorrFctn)
191 AliHBTQOutasCorrFctn::AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
192 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
198 void AliHBTQOutasCorrFctn::BuildHistos()
202 int n=GetNumberOfIntervals();
204 int nbins=Getnbins();
206 double max = GetmaxXval();
207 double min = GetminXval();
216 TString nameNum = "NumOut";
217 TString nameDen = "DenOut";
218 TString nameRat = "RatOut";
222 sprintf(buff,"%d",i);
224 nameNum +=TString(buff);
226 nameDen +=TString(buff);
227 nameRat +=TString(buff);
230 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
231 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
232 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
246 nameNum = TString("NumOut");
247 nameDen = TString("DenOut");
248 nameRat = TString("RatOut");
255 ClassImp(AliHBTQSideasCorrFctn)
257 AliHBTQSideasCorrFctn::AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
258 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
264 void AliHBTQSideasCorrFctn::BuildHistos()
268 int n=GetNumberOfIntervals();
269 int nbins=Getnbins();
271 double max = GetmaxXval();
272 double min = GetminXval();
281 TString nameNum = "NumSide";
282 TString nameDen = "DenSide";
283 TString nameRat = "RatSide";
287 sprintf(buff,"%d",i);
289 nameNum +=TString(buff);
291 nameDen +=TString(buff);
292 nameRat +=TString(buff);
295 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
296 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
297 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
311 nameNum = TString("NumSide");
312 nameDen = TString("DenSide");
313 nameRat = TString("RatSide");
320 ClassImp(AliHBTQLongasCorrFctn)
322 AliHBTQLongasCorrFctn::AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
323 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
329 void AliHBTQLongasCorrFctn::BuildHistos()
333 int n=GetNumberOfIntervals();
334 int nbins=Getnbins();
336 double max = GetmaxXval();
337 double min = GetminXval();
346 TString nameNum = "NumLong";
347 TString nameDen = "DenLong";
348 TString nameRat = "RatLong";
352 sprintf(buff,"%d",i);
354 nameNum +=TString(buff);
356 nameDen +=TString(buff);
357 nameRat +=TString(buff);
360 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
361 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
362 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
376 nameNum = TString("NumLong");
377 nameDen = TString("DenLong");
378 nameRat = TString("RatLong");