1 #include "AliHBTWeightNonId3DCorrFctn.h"
5 ///////////////////////////////////////////////////////
7 // AliHBTWeightNonId3DCorrFctn.h //
9 // Class for calculating 3D non-id correlation //
10 // functions using methods of weights //
12 ///////////////////////////////////////////////////////
14 ClassImp(AliHBTWeightNonId3DCorrFctn)
16 AliHBTWeightNonId3DCorrFctn::AliHBTWeightNonId3DCorrFctn(const char* name, const char* title):
17 AliHBTTwoPairFctn1D(name,title),
25 fWeightRatOutNOverP(0x0),
33 fWeightRatSideNOverP(0x0),
41 fWeightRatLongNOverP(0x0)
45 /******************************************************************/
46 AliHBTWeightNonId3DCorrFctn::AliHBTWeightNonId3DCorrFctn(const char* name, const char* title,
47 Int_t nbinsX, Float_t maxXval, Float_t minXval):
48 AliHBTTwoPairFctn1D(name,title,nbinsX,maxXval,minXval),
56 fWeightRatOutNOverP(0x0),
64 fWeightRatSideNOverP(0x0),
72 fWeightRatLongNOverP(0x0)
77 /******************************************************************/
78 AliHBTWeightNonId3DCorrFctn::AliHBTWeightNonId3DCorrFctn(const AliHBTWeightNonId3DCorrFctn& in):
79 AliHBTTwoPairFctn1D(in),
87 fWeightRatOutNOverP(0x0),
95 fWeightRatSideNOverP(0x0),
100 fWeightDenLongN(0x0),
101 fWeightRatLongN(0x0),
103 fWeightRatLongNOverP(0x0)
108 /******************************************************************/
110 AliHBTWeightNonId3DCorrFctn::~AliHBTWeightNonId3DCorrFctn()
113 delete fWeightNumOutP;
114 delete fWeightDenOutP;
115 delete fWeightRatOutP;
116 delete fWeightNumOutN;
117 delete fWeightDenOutN;
118 delete fWeightRatOutN;
119 delete fWeightRatOut;
120 delete fWeightRatOutNOverP;
121 delete fWeightNumSideP;
122 delete fWeightDenSideP;
123 delete fWeightRatSideP;
124 delete fWeightNumSideN;
125 delete fWeightDenSideN;
126 delete fWeightRatSideN;
127 delete fWeightRatSide;
128 delete fWeightRatSideNOverP;
129 delete fWeightNumLongP;
130 delete fWeightDenLongP;
131 delete fWeightRatLongP;
132 delete fWeightNumLongN;
133 delete fWeightDenLongN;
134 delete fWeightRatLongN;
135 delete fWeightRatLong;
136 delete fWeightRatLongNOverP;
140 //-------------------------------------
141 void AliHBTWeightNonId3DCorrFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
143 //Fills the numerator using pair from the same event
144 partpair = CheckPair(partpair);
145 trackpair = CheckPair(trackpair);
146 if(partpair == 0x0) return;
147 if(trackpair == 0x0) return;
149 double tKStar = TMath::Abs(trackpair->GetKStar());
150 double tKStarOut = trackpair->GetKStarOut();
151 double tKStarSide = trackpair->GetKStarSide();
152 double tKStarLong = trackpair->GetKStarLong();
154 Double_t weight = 1.0;
156 if ( trackpair && partpair)
158 if ( ( trackpair->Particle1()->GetPdgCode() == partpair->Particle1()->GetPdgCode()) &&
159 ( trackpair->Particle2()->GetPdgCode() == partpair->Particle2()->GetPdgCode()) )
161 weight=partpair->GetWeight();
166 fWeightNumOutP->Fill(tKStar,weight);
170 fWeightNumOutN->Fill(tKStar,weight);
175 fWeightNumSideP->Fill(tKStar,weight);
179 fWeightNumSideN->Fill(tKStar,weight);
184 fWeightNumLongP->Fill(tKStar,weight);
188 fWeightNumLongN->Fill(tKStar,weight);
194 /****************************************************************/
197 void AliHBTWeightNonId3DCorrFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
200 trackpair = CheckPair(trackpair);
201 partpair = CheckPair(partpair);
203 double tKStar = TMath::Abs(partpair->GetKStar());
204 double tKStarOut = trackpair->GetKStarOut();
205 double tKStarSide = trackpair->GetKStarSide();
206 double tKStarLong = trackpair->GetKStarLong();
208 if ( trackpair && partpair)
212 fWeightDenOutP->Fill(tKStar);
216 fWeightDenOutN->Fill(tKStar);
221 fWeightDenSideP->Fill(tKStar);
225 fWeightDenSideN->Fill(tKStar);
230 fWeightDenLongP->Fill(tKStar);
234 fWeightDenLongN->Fill(tKStar);
241 /****************************************************************/
242 void AliHBTWeightNonId3DCorrFctn::Init()
244 AliHBTTwoPairFctn1D::Init();
245 fWeightNumOutP->Reset();
246 fWeightDenOutP->Reset();
247 fWeightRatOutP->Reset();
248 fWeightNumOutN->Reset();
249 fWeightDenOutN->Reset();
250 fWeightRatOutN->Reset();
251 fWeightRatOut->Reset();
252 fWeightRatOutNOverP->Reset();
254 fWeightNumSideP->Reset();
255 fWeightDenSideP->Reset();
256 fWeightRatSideP->Reset();
257 fWeightNumSideN->Reset();
258 fWeightDenSideN->Reset();
259 fWeightRatSideN->Reset();
260 fWeightRatSide->Reset();
261 fWeightRatSideNOverP->Reset();
263 fWeightNumLongP->Reset();
264 fWeightDenLongP->Reset();
265 fWeightRatLongP->Reset();
266 fWeightNumLongN->Reset();
267 fWeightDenLongN->Reset();
268 fWeightRatLongN->Reset();
269 fWeightRatLong->Reset();
270 fWeightRatLongNOverP->Reset();
272 /******************************************************************/
274 void AliHBTWeightNonId3DCorrFctn::BuildHistos(Int_t nbins, Float_t max, Float_t min)
277 AliHBTFunction1D::BuildHistos(nbins,max,min);
279 TString nameNumOutP = "WeightNumOutP";
280 TString nameDenOutP = "WeightDenOutP";
281 TString nameRatOutP = "WeightRatOutP";
282 TString nameNumOutN = "WeightNumOutN";
283 TString nameDenOutN = "WeightDenOutN";
284 TString nameRatOutN = "WeightRatOutN";
285 TString nameRatOut = "WeightRatOut";
286 TString nameRatOutNOverP = "WeightRatOutNOverP";
287 TString nameNumSideP = "WeightNumSideP";
288 TString nameDenSideP = "WeightDenSideP";
289 TString nameRatSideP = "WeightRatSideP";
290 TString nameNumSideN = "WeightNumSideN";
291 TString nameDenSideN = "WeightDenSideN";
292 TString nameRatSideN = "WeightRatSideN";
293 TString nameRatSide = "WeightRatSide";
294 TString nameRatSideNOverP = "WeightRatSideNOverP";
295 TString nameNumLongP = "WeightNumLongP";
296 TString nameDenLongP = "WeightDenLongP";
297 TString nameRatLongP = "WeightRatLongP";
298 TString nameNumLongN = "WeightNumLongN";
299 TString nameDenLongN = "WeightDenLongN";
300 TString nameRatLongN = "WeightRatLongN";
301 TString nameRatLong = "WeightRatLong";
302 TString nameRatLongNOverP = "WeightRatLongNOverP";
304 fWeightNumOutP = new TH1D(nameNumOutP.Data(),nameNumOutP.Data(),nbins,min,max);
305 fWeightDenOutP = new TH1D(nameDenOutP.Data(),nameDenOutP.Data(),nbins,min,max);
306 fWeightRatOutP = new TH1D(nameRatOutP.Data(),nameRatOutP.Data(),nbins,min,max);
308 fWeightNumOutN = new TH1D(nameNumOutN.Data(),nameNumOutN.Data(),nbins,min,max);
309 fWeightDenOutN = new TH1D(nameDenOutN.Data(),nameDenOutN.Data(),nbins,min,max);
310 fWeightRatOutN = new TH1D(nameRatOutN.Data(),nameRatOutN.Data(),nbins,min,max);
312 fWeightRatOut = new TH1D(nameRatOut.Data(),nameRatOut.Data(),nbins,min,max);
313 fWeightRatOutNOverP = new TH1D(nameRatOutNOverP.Data(),nameRatOutNOverP.Data(),nbins,min,max);
315 fWeightNumSideP = new TH1D(nameNumSideP.Data(),nameNumSideP.Data(),nbins,min,max);
316 fWeightDenSideP = new TH1D(nameDenSideP.Data(),nameDenSideP.Data(),nbins,min,max);
317 fWeightRatSideP = new TH1D(nameRatSideP.Data(),nameRatSideP.Data(),nbins,min,max);
319 fWeightNumSideN = new TH1D(nameNumSideN.Data(),nameNumSideN.Data(),nbins,min,max);
320 fWeightDenSideN = new TH1D(nameDenSideN.Data(),nameDenSideN.Data(),nbins,min,max);
321 fWeightRatSideN = new TH1D(nameRatSideN.Data(),nameRatSideN.Data(),nbins,min,max);
323 fWeightRatSide = new TH1D(nameRatSide.Data(),nameRatSide.Data(),nbins,min,max);
324 fWeightRatSideNOverP = new TH1D(nameRatSideNOverP.Data(),nameRatSideNOverP.Data(),nbins,min,max);
326 fWeightNumLongP = new TH1D(nameNumLongP.Data(),nameNumLongP.Data(),nbins,min,max);
327 fWeightDenLongP = new TH1D(nameDenLongP.Data(),nameDenLongP.Data(),nbins,min,max);
328 fWeightRatLongP = new TH1D(nameRatLongP.Data(),nameRatLongP.Data(),nbins,min,max);
330 fWeightNumLongN = new TH1D(nameNumLongN.Data(),nameNumLongN.Data(),nbins,min,max);
331 fWeightDenLongN = new TH1D(nameDenLongN.Data(),nameDenLongN.Data(),nbins,min,max);
332 fWeightRatLongN = new TH1D(nameRatLongN.Data(),nameRatLongN.Data(),nbins,min,max);
334 fWeightRatLong = new TH1D(nameRatLong.Data(),nameRatLong.Data(),nbins,min,max);
335 fWeightRatLongNOverP = new TH1D(nameRatLongNOverP.Data(),nameRatLongNOverP.Data(),nbins,min,max);
338 fWeightNumOutP->Sumw2();
339 fWeightDenOutP->Sumw2();
340 fWeightRatOutP->Sumw2();
341 fWeightNumOutN->Sumw2();
342 fWeightDenOutN->Sumw2();
343 fWeightRatOutN->Sumw2();
344 fWeightRatOut->Sumw2();
345 fWeightRatOutNOverP->Sumw2();
346 fWeightNumSideP->Sumw2();
347 fWeightDenSideP->Sumw2();
348 fWeightRatSideP->Sumw2();
349 fWeightNumSideN->Sumw2();
350 fWeightDenSideN->Sumw2();
351 fWeightRatSideN->Sumw2();
352 fWeightRatSide->Sumw2();
353 fWeightRatSideNOverP->Sumw2();
354 fWeightNumLongP->Sumw2();
355 fWeightDenLongP->Sumw2();
356 fWeightRatLongP->Sumw2();
357 fWeightNumLongN->Sumw2();
358 fWeightDenLongN->Sumw2();
359 fWeightRatLongN->Sumw2();
360 fWeightRatLong->Sumw2();
361 fWeightRatLongNOverP->Sumw2();
364 /******************************************************************/
366 TH1* AliHBTWeightNonId3DCorrFctn::GetResult()
368 return fWeightRatOutN;
371 /******************************************************************/
373 void AliHBTWeightNonId3DCorrFctn::WriteFunction()
376 Double_t outPscale = Scale(fWeightNumOutP,fWeightDenOutP);
377 cout<<"WoutPscale = "<<outPscale<<endl;
378 fWeightRatOutP->Divide(fWeightNumOutP,fWeightDenOutP,outPscale);
380 Double_t outNscale = Scale(fWeightNumOutN,fWeightDenOutN);
381 cout<<"WoutNscale = "<<outNscale<<endl;
382 fWeightRatOutN->Divide(fWeightNumOutN,fWeightDenOutN,outNscale);
384 fWeightRatOutNOverP->Divide(fWeightRatOutN,fWeightRatOutP);
387 Double_t sidePscale = Scale(fWeightNumSideP,fWeightDenSideP);
388 fWeightRatSideP->Divide(fWeightNumSideP,fWeightDenSideP,sidePscale);
390 Double_t sideNscale = Scale(fWeightNumSideN,fWeightDenSideN);
391 fWeightRatSideN->Divide(fWeightNumSideN,fWeightDenSideN,sideNscale);
393 fWeightRatSideNOverP->Divide(fWeightRatSideN,fWeightRatSideP);
396 Double_t longPscale = Scale(fWeightNumLongP,fWeightDenLongP);
397 fWeightRatLongP->Divide(fWeightNumLongP,fWeightDenLongP,longPscale);
399 Double_t longNscale = Scale(fWeightNumLongN,fWeightDenLongN);
400 fWeightRatLongN->Divide(fWeightNumLongN,fWeightDenLongN,longNscale);
402 fWeightRatLongNOverP->Divide(fWeightRatLongN,fWeightRatLongP);
404 fWeightNumOutP->Write();
405 fWeightDenOutP->Write();
406 fWeightRatOutP->Write();
407 fWeightNumOutN->Write();
408 fWeightDenOutN->Write();
409 fWeightRatOutN->Write();
410 fWeightRatOut->Write();
411 fWeightRatOutNOverP->Write();
413 fWeightNumSideP->Write();
414 fWeightDenSideP->Write();
415 fWeightRatSideP->Write();
416 fWeightNumSideN->Write();
417 fWeightDenSideN->Write();
418 fWeightRatSideN->Write();
419 fWeightRatSide->Write();
420 fWeightRatSideNOverP->Write();
422 fWeightNumLongP->Write();
423 fWeightDenLongP->Write();
424 fWeightRatLongP->Write();
425 fWeightNumLongN->Write();
426 fWeightDenLongN->Write();
427 fWeightRatLongN->Write();
428 fWeightRatLong->Write();
429 fWeightRatLongNOverP->Write();