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),
46 /******************************************************************/
47 AliHBTasCorrFctn::AliHBTasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
48 AliHBTOnePairFctn1D(name,title,nbins,maxXval,minXval),
51 fNum(new TObjArray()),
52 fDen(new TObjArray()),
55 SetParams(nbins,maxXval, minXval);
58 /******************************************************************/
59 AliHBTasCorrFctn::AliHBTasCorrFctn(const AliHBTasCorrFctn& in):
60 AliHBTOnePairFctn1D(in),
64 fNum((in.fNum)?(TObjArray*)in.fNum->Clone():0x0),
65 fDen((in.fDen)?(TObjArray*)in.fDen->Clone():0x0),
66 fRat((in.fRat)?(TObjArray*)in.fRat->Clone():0x0)
71 /******************************************************************/
73 AliHBTasCorrFctn::~AliHBTasCorrFctn()
83 /******************************************************************/
84 Int_t AliHBTasCorrFctn::Write(const char*,Int_t, Int_t)
88 // Int_t n=GetNumberOfIntervals();
91 for(i=0;i<fNumberOfIntervals;i++){
92 TH1D *num = ((TH1D*)fNum->At(i));
93 TH1D *den = ((TH1D*)fDen->At(i));
94 TH1D &rat = *((TH1D*)fRat->At(i));
95 scale = Scale(num,den);
96 Info("Write():","Scale in interval %d = %lf",i,scale);
97 rat.Divide(num,den,scale);
107 //-------------------------------------
108 void AliHBTasCorrFctn::ProcessSameEventParticles(AliHBTPair* pair)
110 //Fills the numerator using pair from the same event
111 pair = CheckPair(pair);
112 if(pair == 0x0) return;
113 // int n = GetNumberOfIntervals();
114 int n = fNumberOfIntervals;
115 Double_t rplane=0.; //reaction plane angle - 2 B determined
116 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
117 phi=phi*360/(2*TMath::Pi());
118 Double_t q=GetValue(pair);
120 ntv = (int)(phi*n/(360.));
122 TH1D *num = ((TH1D*)fNum->At(ntv));
128 /****************************************************************/
129 void AliHBTasCorrFctn::Init()
133 /****************************************************************/
136 void AliHBTasCorrFctn::ProcessDiffEventParticles(AliHBTPair* pair)
138 //fills denumerator with data from different events
139 Double_t rplane=0.; //reaction plane angle - 2 B determined
140 Double_t phi=(pair->Particle1()->Phi()+pair->Particle2()->Phi())/2.-rplane; //deltaphi bo nie mam nic innego pod reka
141 phi=phi*360/(2*TMath::Pi());
142 Double_t qout=GetValue(pair);
144 // int n=GetNumberOfIntervals();
145 int n = fNumberOfIntervals;
148 ntv = (int)(phi*n/(360.));
150 TH1D &den = *((TH1D*)fDen->At(ntv));
157 /******************************************************************/
160 void AliHBTasCorrFctn::SetParams(Int_t nbins, Float_t maxXval, Float_t minXval)
162 //sets parameters for histograms
167 TH1* AliHBTasCorrFctn::GetResult()
169 //does nothing, it can as well have nothing inside, its just for class to work normally
170 TH1D *den = ((TH1D*)fDen->UncheckedAt(1));
176 ClassImp(AliHBTQOutasCorrFctn)
178 AliHBTQOutasCorrFctn::AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
179 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
185 void AliHBTQOutasCorrFctn::BuildHistos()
189 int n=GetNumberOfIntervals();
191 int nbins=Getnbins();
193 double max = GetmaxXval();
194 double min = GetminXval();
203 TString nameNum = "NumOut";
204 TString nameDen = "DenOut";
205 TString nameRat = "RatOut";
209 sprintf(buff,"%d",i);
211 nameNum +=TString(buff);
213 nameDen +=TString(buff);
214 nameRat +=TString(buff);
217 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
218 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
219 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
233 nameNum = TString("NumOut");
234 nameDen = TString("DenOut");
235 nameRat = TString("RatOut");
242 ClassImp(AliHBTQSideasCorrFctn)
244 AliHBTQSideasCorrFctn::AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
245 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
251 void AliHBTQSideasCorrFctn::BuildHistos()
255 int n=GetNumberOfIntervals();
256 int nbins=Getnbins();
258 double max = GetmaxXval();
259 double min = GetminXval();
268 TString nameNum = "NumSide";
269 TString nameDen = "DenSide";
270 TString nameRat = "RatSide";
274 sprintf(buff,"%d",i);
276 nameNum +=TString(buff);
278 nameDen +=TString(buff);
279 nameRat +=TString(buff);
282 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
283 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
284 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
298 nameNum = TString("NumSide");
299 nameDen = TString("DenSide");
300 nameRat = TString("RatSide");
307 ClassImp(AliHBTQLongasCorrFctn)
309 AliHBTQLongasCorrFctn::AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval):
310 AliHBTasCorrFctn(name,title,nbins,maxXval,minXval)
316 void AliHBTQLongasCorrFctn::BuildHistos()
320 int n=GetNumberOfIntervals();
321 int nbins=Getnbins();
323 double max = GetmaxXval();
324 double min = GetminXval();
333 TString nameNum = "NumLong";
334 TString nameDen = "DenLong";
335 TString nameRat = "RatLong";
339 sprintf(buff,"%d",i);
341 nameNum +=TString(buff);
343 nameDen +=TString(buff);
344 nameRat +=TString(buff);
347 num = new TH1D(nameNum.Data(),nameNum.Data(),nbins,min,max);
348 den = new TH1D(nameDen.Data(),nameDen.Data(),nbins,min,max);
349 rat = new TH1D(nameRat.Data(),nameRat.Data(),nbins,min,max);
363 nameNum = TString("NumLong");
364 nameDen = TString("DenLong");
365 nameRat = TString("RatLong");