1 #include "AliHBTPIDPurityFctns.h"
2 //_______________________________________________________________________________
3 /////////////////////////////////////////////////////////////////////////////////
5 // class AliHBTMonPhiResolutionVsPtFctn;
6 // class AliHBTMonThetaResolutionVsPtFctn;
8 // file: AliHBTPIDPurityFctns.cxx AliHBTPIDPurityFctns.h
10 // Classes for calculating PID purity, efficiency and other things connected with PID
14 // added by Piotr.Skowronski@cern.ch
16 //////////////////////////////////////////////////////////////////////////////////
19 /******************************************************************/
20 /******************************************************************/
21 /******************************************************************/
23 ClassImp(AliHBTMonPIDPurityVsPtFctn)
25 AliHBTMonPIDPurityVsPtFctn::AliHBTMonPIDPurityVsPtFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
26 AliHBTMonTwoParticleFctn1D(nbins,maxXval,minXval),
31 Rename("pidpurityvspt","PIDPurityVsPt");
34 /******************************************************************/
36 AliHBTMonPIDPurityVsPtFctn::AliHBTMonPIDPurityVsPtFctn(const AliHBTMonPIDPurityVsPtFctn& /*in*/):
37 AliHBTMonTwoParticleFctn1D(),
38 AliHBTCorrelFunction(),
43 Error("AliHBTMonPIDPurityVsPtFctn(const AliHBTMonPIDPurityVsPtFctn&",
44 "Functions can not be copied because of histogram names clashes");
47 /******************************************************************/
49 AliHBTMonPIDPurityVsPtFctn::~AliHBTMonPIDPurityVsPtFctn()
55 /******************************************************************/
57 AliHBTMonPIDPurityVsPtFctn& AliHBTMonPIDPurityVsPtFctn::operator=
58 (const AliHBTMonPIDPurityVsPtFctn& /*in*/)
61 Error("operator=","Functions can not be copied because of histogram names clashes");
64 /******************************************************************/
66 void AliHBTMonPIDPurityVsPtFctn::Write()
68 //Writes a fucntion results
69 AliHBTMonitorFunction::Write();
73 /******************************************************************/
75 void AliHBTMonPIDPurityVsPtFctn::Init()
78 if (AliVAODParticle::GetDebug()>0) Info("Init","%s",GetName());
82 Warning("Init","Function has NULL result histogram!");
88 TString numstr = fName + " Good"; //title and name of the
90 TAxis* xax = fResult->GetXaxis();
91 fGood = new TH1D(numstr,numstr,xax->GetNbins(),xax->GetXmin(),xax->GetXmax());
96 TString numstr = fName + " All"; //title and name of the
98 TAxis* xax = fResult->GetXaxis();
99 fAll = new TH1D(numstr,numstr,xax->GetNbins(),xax->GetXmin(),xax->GetXmax());
103 fResult->SetDirectory(0x0);
106 fGood->SetDirectory(0x0);
109 fAll->SetDirectory(0x0);
112 if (AliVAODParticle::GetDebug()>0) Info("Init","%s Done.",GetName());
115 /******************************************************************/
117 void AliHBTMonPIDPurityVsPtFctn::Rename(const Char_t * name)
119 //Rename fuctions and all histograms belonging to it
125 TString numstr = fName + " Result"; //title and name of the result histogram
126 fResult->SetName(numstr);
127 fResult->SetTitle(numstr);
132 TString numstr = fName + " Good";
133 fGood->SetName(numstr);
134 fGood->SetTitle(numstr);
139 TString numstr = fName + " All";
140 fAll->SetName(numstr);
141 fAll->SetTitle(numstr);
144 /******************************************************************/
146 void AliHBTMonPIDPurityVsPtFctn::Rename(const Char_t * name, const Char_t * title)
148 //renames and retitle the function and histograms
155 TString numstrn = fName + " Result"; //name of the result histogram
156 TString numstrt = fTitle + " Result"; //title of the result histogram
157 fResult->SetName(numstrn);
158 fResult->SetTitle(numstrt);
162 TString numstrn = fName + " Good"; //name of the Good histogram
163 TString numstrt = fTitle + " Good"; //title of the Good histogram
164 fGood->SetName(numstrn);
165 fGood->SetTitle(numstrt);
170 TString numstrn = fName + " All"; //name of the All histogram
171 TString numstrt = fTitle + " All"; //title of the All histogram
172 fAll->SetName(numstrn);
173 fAll->SetTitle(numstrt);
177 /******************************************************************/
179 TH1* AliHBTMonPIDPurityVsPtFctn::GetResult()
181 //Returns the result of the fuction
182 //that is histogram with effciency and contamination
184 fResult->Divide(fGood,fAll);
187 /******************************************************************/
189 void AliHBTMonPIDPurityVsPtFctn::Process(AliVAODParticle * track,AliVAODParticle * part)
191 //process the particle/track
192 Double_t pt = part->Pt();
194 if (track->GetPdgCode() == part->GetPdgCode())
200 // Info("Process","Catched pid impurity ...");
204 /******************************************************************/
205 /******************************************************************/
206 /******************************************************************/
208 ClassImp(AliHBTMonPIDContaminationVsPtFctn)
210 AliHBTMonPIDContaminationVsPtFctn::AliHBTMonPIDContaminationVsPtFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
211 AliHBTMonTwoParticleFctn1D(nbins,maxXval,minXval),
216 Rename("pidcontaminationvspt","PIDContaminationVsPt");
218 /******************************************************************/
220 AliHBTMonPIDContaminationVsPtFctn::AliHBTMonPIDContaminationVsPtFctn
221 (const AliHBTMonPIDContaminationVsPtFctn& /*in*/):
222 AliHBTMonTwoParticleFctn1D(),
223 AliHBTCorrelFunction(),
228 Error("AliHBTMonPIDContaminationVsPtFctn(const AliHBTMonPIDContaminationVsPtFctn&",
229 "Functions can not be copied because of histogram names clashes");
232 /******************************************************************/
234 AliHBTMonPIDContaminationVsPtFctn::~AliHBTMonPIDContaminationVsPtFctn()
240 /******************************************************************/
242 AliHBTMonPIDContaminationVsPtFctn& AliHBTMonPIDContaminationVsPtFctn::operator=
243 (const AliHBTMonPIDContaminationVsPtFctn& /*in*/)
246 Error("operator=","Functions can not be copied because of histogram names clashes");
249 /******************************************************************/
251 void AliHBTMonPIDContaminationVsPtFctn::Write()
253 //Writes the function results
254 AliHBTMonitorFunction::Write();
258 /******************************************************************/
260 void AliHBTMonPIDContaminationVsPtFctn::Init()
262 //Initializes fuction
263 if (AliVAODParticle::GetDebug()>0) Info("Init","%s",GetName());
267 Warning("Init","Function has NULL result histogram!");
273 TString numstr = fName + " Wrong"; //title and name of the
275 TAxis* xax = fResult->GetXaxis();
276 fWrong = new TH1D(numstr,numstr,xax->GetNbins(),xax->GetXmin(),xax->GetXmax());
281 TString numstr = fName + " All"; //title and name of the
283 TAxis* xax = fResult->GetXaxis();
284 fAll = new TH1D(numstr,numstr,xax->GetNbins(),xax->GetXmin(),xax->GetXmax());
287 fResult->SetDirectory(0x0);
290 fWrong->SetDirectory(0x0);
293 fAll->SetDirectory(0x0);
296 if (AliVAODParticle::GetDebug()>0) Info("Init","%s Done.",GetName());
299 /******************************************************************/
301 void AliHBTMonPIDContaminationVsPtFctn::Rename(const Char_t * name)
303 //Rename fuctions and all histograms belonging to it
309 TString numstr = fName + " Result"; //title and name of the result histogram
310 fResult->SetName(numstr);
311 fResult->SetTitle(numstr);
315 TString numstr = fName + " Wrong";
316 fWrong->SetName(numstr);
317 fWrong->SetTitle(numstr);
322 TString numstrn = fName + " All"; //name of the All histogram
323 TString numstrt = fTitle + " All"; //title of the All histogram
324 fAll->SetName(numstrn);
325 fAll->SetTitle(numstrt);
328 /******************************************************************/
330 void AliHBTMonPIDContaminationVsPtFctn::Rename(const Char_t * name, const Char_t * title)
332 //renames and retitle the function and histograms
339 TString numstrn = fName + " Result"; //name of the result histogram
340 TString numstrt = fTitle + " Result"; //title of the result histogram
341 fResult->SetName(numstrn);
342 fResult->SetTitle(numstrt);
346 TString numstrn = fName + " Wrong"; //name of the Wrong histogram
347 TString numstrt = fTitle + " Wrong"; //title of the Wrong histogram
348 fWrong->SetName(numstrn);
349 fWrong->SetTitle(numstrt);
354 TString numstr = fName + " All";
355 fAll->SetName(numstr);
356 fAll->SetTitle(numstr);
360 /******************************************************************/
362 TH1* AliHBTMonPIDContaminationVsPtFctn::GetResult()
364 //Returns the result of the fuction
365 //that is histogram with effciency and contamination
367 fResult->Divide(fWrong,fAll);
370 /******************************************************************/
372 void AliHBTMonPIDContaminationVsPtFctn::Process(AliVAODParticle * track, AliVAODParticle * part)
374 //process the particle/track
375 Double_t pt = part->Pt();
378 if (track->GetPdgCode() != part->GetPdgCode())
380 // Info("Process","Catched contamination");
381 // track->Print();part->Print();
386 /******************************************************************/
387 /******************************************************************/
388 /******************************************************************/
389 ClassImp(AliHBTQInvCorrelFctnPerfectPID)
391 AliHBTQInvCorrelFctnPerfectPID::AliHBTQInvCorrelFctnPerfectPID(Int_t nbins, Double_t maxXval, Double_t minXval):
392 AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
395 fWriteNumAndDen = kTRUE;//change default behaviour
396 Rename("qinvcfprfctpid","Q_{inv} Correlation Function Perfect PID");
398 /*************************************************************/
400 void AliHBTQInvCorrelFctnPerfectPID::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
403 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
404 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
406 trackpair = CheckPair(trackpair);
407 if (trackpair == 0x0) return;
408 partpair = CheckPair(partpair);
409 if (partpair == 0x0) return;
411 fNumerator->Fill(trackpair->GetQInv());
414 /*************************************************************/
415 void AliHBTQInvCorrelFctnPerfectPID::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
418 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
419 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
421 trackpair = CheckPair(trackpair);
422 if (trackpair == 0x0) return;
423 partpair = CheckPair(partpair);
424 if (partpair == 0x0) return;
426 fDenominator->Fill(trackpair->GetQInv());
428 /*************************************************************/
430 TH1* AliHBTQInvCorrelFctnPerfectPID::GetResult()
432 //returns the scaled ratio
435 fRatio = GetRatio(Scale());
438 /*************************************************************/
439 /******************************************************************/
440 /******************************************************************/
441 /******************************************************************/
443 ClassImp(AliHBTWeightQInvCorrelFctnPerfectPID)
445 AliHBTWeightQInvCorrelFctnPerfectPID::AliHBTWeightQInvCorrelFctnPerfectPID(Int_t nbins, Double_t maxXval, Double_t minXval):
446 AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
449 fWriteNumAndDen = kTRUE;//change default behaviour
450 Rename("wqinvcfprfctpid","Q_{inv} Weight Correlation Function Perfect PID");
452 /*************************************************************/
454 void AliHBTWeightQInvCorrelFctnPerfectPID::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
457 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
458 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
460 trackpair = CheckPair(trackpair);
461 if (trackpair == 0x0) return;
462 partpair = CheckPair(partpair);
463 if (partpair == 0x0) return;
465 fNumerator->Fill(trackpair->GetQInv(),partpair->GetWeight());
468 /*************************************************************/
469 void AliHBTWeightQInvCorrelFctnPerfectPID::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
472 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
473 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
475 trackpair = CheckPair(trackpair);
476 if (trackpair == 0x0) return;
477 partpair = CheckPair(partpair);
478 if (partpair == 0x0) return;
480 fDenominator->Fill(trackpair->GetQInv());
482 /*************************************************************/
484 TH1* AliHBTWeightQInvCorrelFctnPerfectPID::GetResult()
486 //returns the scaled ratio
489 fRatio = GetRatio(Scale());
494 /******************************************************************/
495 /******************************************************************/
496 /******************************************************************/
498 ClassImp(AliHBTWeightQOutSQideQLongFctnPerfectPID)
500 AliHBTWeightQOutSQideQLongFctnPerfectPID::AliHBTWeightQOutSQideQLongFctnPerfectPID
501 (Int_t nXbins, Double_t maxXval, Double_t minXval,
502 Int_t nYbins, Double_t maxYval, Double_t minYval,
503 Int_t nZbins, Double_t maxZval, Double_t minZval):
504 AliHBTTwoPairFctn3D(nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval)
507 fWriteNumAndDen = kTRUE;//change default behaviour
508 Rename("wqoslprfctpid","Q_{out}-Q_{side}-Q_{long} Weight Fctn with perfect PID");
510 /*************************************************************/
512 void AliHBTWeightQOutSQideQLongFctnPerfectPID::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
515 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
516 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
518 trackpair = CheckPair(trackpair);
519 if (trackpair == 0x0) return;
520 partpair = CheckPair(partpair);
521 if (partpair == 0x0) return;
523 Double_t weight = partpair->GetWeight();
524 Double_t out = TMath::Abs(trackpair->GetQOutLCMS());
525 Double_t side = TMath::Abs(trackpair->GetQSideLCMS());
526 Double_t lon = TMath::Abs(trackpair->GetQLongLCMS());
527 fNumerator->Fill(out,side,lon,weight);
529 /*************************************************************/
531 void AliHBTWeightQOutSQideQLongFctnPerfectPID::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
534 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
535 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
537 trackpair = CheckPair(trackpair);
538 if (trackpair == 0x0) return;
539 partpair = CheckPair(partpair);
540 if (partpair == 0x0) return;
542 Double_t out = TMath::Abs(trackpair->GetQOutLCMS());
543 Double_t side = TMath::Abs(trackpair->GetQSideLCMS());
544 Double_t lon = TMath::Abs(trackpair->GetQLongLCMS());
545 fDenominator->Fill(out,side,lon);
547 /******************************************************************/
549 TH1* AliHBTWeightQOutSQideQLongFctnPerfectPID::GetResult()
551 //returns the scaled ratio
553 fRatio = GetRatio(Scale());
558 /******************************************************************/
559 /******************************************************************/
560 /******************************************************************/
562 ClassImp(AliHBTQOutSQideQLongFctnPerfectPID)
564 AliHBTQOutSQideQLongFctnPerfectPID::AliHBTQOutSQideQLongFctnPerfectPID
565 (Int_t nXbins, Double_t maxXval, Double_t minXval,
566 Int_t nYbins, Double_t maxYval, Double_t minYval,
567 Int_t nZbins, Double_t maxZval, Double_t minZval):
568 AliHBTTwoPairFctn3D(nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval)
571 fWriteNumAndDen = kTRUE;//change default behaviour
572 Rename("qoslprfctpid","Q_{out}-Q_{side}-Q_{long} Fctn with perfect PID");
574 /*************************************************************/
576 void AliHBTQOutSQideQLongFctnPerfectPID::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
579 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
580 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
582 trackpair = CheckPair(trackpair);
583 if (trackpair == 0x0) return;
584 partpair = CheckPair(partpair);
585 if (partpair == 0x0) return;
587 Double_t out = TMath::Abs(trackpair->GetQOutLCMS());
588 Double_t side = TMath::Abs(trackpair->GetQSideLCMS());
589 Double_t lon = TMath::Abs(trackpair->GetQLongLCMS());
590 fNumerator->Fill(out,side,lon);
592 /*************************************************************/
594 void AliHBTQOutSQideQLongFctnPerfectPID::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
597 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
598 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
600 trackpair = CheckPair(trackpair);
601 if (trackpair == 0x0) return;
602 partpair = CheckPair(partpair);
603 if (partpair == 0x0) return;
605 Double_t out = TMath::Abs(trackpair->GetQOutLCMS());
606 Double_t side = TMath::Abs(trackpair->GetQSideLCMS());
607 Double_t lon = TMath::Abs(trackpair->GetQLongLCMS());
608 fDenominator->Fill(out,side,lon);
610 /******************************************************************/
612 TH1* AliHBTQOutSQideQLongFctnPerfectPID::GetResult()
614 //returns the scaled ratio
616 fRatio = GetRatio(Scale());
620 /******************************************************************/
621 /******************************************************************/
622 /******************************************************************/
626 ClassImp(AliHBTPairPIDProbVsQInvFctn)
628 AliHBTPairPIDProbVsQInvFctn::AliHBTPairPIDProbVsQInvFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
629 AliHBTOnePairFctn1D(nbins,maxXval,minXval)
631 fWriteNumAndDen = kTRUE;//change default behaviour
632 Rename("qinvpidpur","Q_{inv} Function");
634 /******************************************************************/
636 TH1* AliHBTPairPIDProbVsQInvFctn::GetResult()
638 //returns the scaled ratio
640 fRatio = GetRatio(Scale());
643 /******************************************************************/
645 void AliHBTPairPIDProbVsQInvFctn::ProcessSameEventParticles(AliHBTPair* pair)
647 //Fills the numerator using pair from the same event
648 pair = CheckPair(pair);
649 if(pair) fNumerator->Fill(pair->GetQInv(),pair->GetPIDProb());
651 /******************************************************************/
653 void AliHBTPairPIDProbVsQInvFctn::ProcessDiffEventParticles(AliHBTPair* pair)
655 //Fills the denumerator using mixed pairs
656 pair = CheckPair(pair);
657 if(pair) fDenominator->Fill(pair->GetQInv(),pair->GetPIDProb());
660 /******************************************************************/
661 /******************************************************************/
662 /******************************************************************/
664 ClassImp(AliHBTPairPIDProbVsQOutSQideQLongFctn)
666 AliHBTPairPIDProbVsQOutSQideQLongFctn::AliHBTPairPIDProbVsQOutSQideQLongFctn(Int_t nXbins, Double_t maxXval, Double_t minXval,
667 Int_t nYbins, Double_t maxYval, Double_t minYval,
668 Int_t nZbins, Double_t maxZval, Double_t minZval):
669 AliHBTOnePairFctn3D(nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval)
672 fWriteNumAndDen = kTRUE;//change default behaviour
673 Rename("qoslpidpur","Pair PID Probablilty .vs. Q_{out}-Q_{side}-Q_{long} Fctn");
675 /*************************************************************/
677 void AliHBTPairPIDProbVsQOutSQideQLongFctn::ProcessSameEventParticles(AliHBTPair* pair)
680 pair = CheckPair(pair);
681 if (pair == 0x0) return;
682 Double_t weight = pair->GetPIDProb();
683 Double_t out = TMath::Abs(pair->GetQOutLCMS());
684 Double_t side = TMath::Abs(pair->GetQSideLCMS());
685 Double_t lon = TMath::Abs(pair->GetQLongLCMS());
686 fNumerator->Fill(out,side,lon,weight);
688 /*************************************************************/
690 void AliHBTPairPIDProbVsQOutSQideQLongFctn::ProcessDiffEventParticles(AliHBTPair* pair)
693 pair = CheckPair(pair);
694 if (pair == 0x0) return;
695 Double_t weight = pair->GetPIDProb();
696 Double_t out = TMath::Abs(pair->GetQOutLCMS());
697 Double_t side = TMath::Abs(pair->GetQSideLCMS());
698 Double_t lon = TMath::Abs(pair->GetQLongLCMS());
699 fDenominator->Fill(out,side,lon,weight);
701 /*************************************************************/
703 TH1* AliHBTPairPIDProbVsQOutSQideQLongFctn::GetResult()
705 //returns the scaled ratio
708 fRatio = GetRatio(Scale());
712 /******************************************************************/
713 /******************************************************************/
714 /******************************************************************/
716 ClassImp(AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID)
718 AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID::AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID(Int_t nXbins, Double_t maxXval, Double_t minXval,
719 Int_t nYbins, Double_t maxYval, Double_t minYval,
720 Int_t nZbins, Double_t maxZval, Double_t minZval):
721 AliHBTTwoPairFctn3D(nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval)
725 fWriteNumAndDen = kTRUE;
726 Rename("tteffptthetaphipfctPID","P_{t} \\theta \\phi Two Track Efficiency Function");
729 fNumerator->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
730 fNumerator->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
731 fNumerator->GetZaxis()->SetTitle("\\Delta \\phi [rad]");
736 fDenominator->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
737 fDenominator->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
738 fDenominator->GetZaxis()->SetTitle("\\Delta \\phi [rad]");
741 /******************************************************************/
743 void AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
746 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
747 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
749 trackpair = CheckPair(trackpair);
750 if (trackpair == 0x0) return;
751 partpair = CheckPair(partpair);
752 if (partpair == 0x0) return;
754 Double_t x = TMath::Abs(trackpair->GetDeltaPt());
755 Double_t y = TMath::Abs(trackpair->GetDeltaTheta());
756 Double_t z = TMath::Abs(trackpair->GetDeltaPhi());
757 fNumerator->Fill(x,y,z);
759 /******************************************************************/
761 void AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
764 if (trackpair->Particle1()->GetPdgCode() != partpair->Particle1()->GetPdgCode()) return;
765 if (trackpair->Particle2()->GetPdgCode() != partpair->Particle2()->GetPdgCode()) return;
767 trackpair = CheckPair(trackpair);
768 if (trackpair == 0x0) return;
769 partpair = CheckPair(partpair);
770 if (partpair == 0x0) return;
772 Double_t x = TMath::Abs(trackpair->GetDeltaPt());
773 Double_t y = TMath::Abs(trackpair->GetDeltaTheta());
774 Double_t z = TMath::Abs(trackpair->GetDeltaPhi());
775 fDenominator->Fill(x,y,z);
777 /******************************************************************/
779 TH1* AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID::GetResult()
781 //returns ratio of numerator and denominator
783 fRatio = GetRatio(Scale());
786 fRatio->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
787 fRatio->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
788 fRatio->GetZaxis()->SetTitle("\\Delta \\phi [rad]");
792 /******************************************************************/
793 /******************************************************************/
794 /******************************************************************/
796 ClassImp(AliHBTPairPIDProbVsPtThetaPhiFctn)
798 AliHBTPairPIDProbVsPtThetaPhiFctn::AliHBTPairPIDProbVsPtThetaPhiFctn(Int_t nXbins, Double_t maxXval, Double_t minXval,
799 Int_t nYbins, Double_t maxYval, Double_t minYval,
800 Int_t nZbins, Double_t maxZval, Double_t minZval):
801 AliHBTOnePairFctn3D(nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval)
804 fWriteNumAndDen = kTRUE;//change default behaviour
805 Rename("ptthetaphipidpur","Pair PID Probablilty .vs. \\Delta P_{t}-\\Delta \\theta-\\Delta \\phi Fctn");
808 fNumerator->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
809 fNumerator->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
810 fNumerator->GetZaxis()->SetTitle("\\Delta \\phi [rad]");
815 fDenominator->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
816 fDenominator->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
817 fDenominator->GetZaxis()->SetTitle("\\Delta \\phi [rad]");
821 /*************************************************************/
823 void AliHBTPairPIDProbVsPtThetaPhiFctn::ProcessSameEventParticles(AliHBTPair* pair)
826 pair = CheckPair(pair);
827 if (pair == 0x0) return;
828 Double_t weight = pair->GetPIDProb();
829 Double_t pt = TMath::Abs(pair->GetDeltaPt());
830 Double_t theta = TMath::Abs(pair->GetDeltaTheta());
831 Double_t phi = TMath::Abs(pair->GetDeltaPhi());
832 fNumerator->Fill(pt,theta,phi,weight);
834 /*************************************************************/
836 void AliHBTPairPIDProbVsPtThetaPhiFctn::ProcessDiffEventParticles(AliHBTPair* pair)
839 pair = CheckPair(pair);
840 if (pair == 0x0) return;
841 Double_t weight = pair->GetPIDProb();
842 Double_t pt = TMath::Abs(pair->GetDeltaPt());
843 Double_t phi = TMath::Abs(pair->GetDeltaTheta());
844 Double_t theta = TMath::Abs(pair->GetDeltaPhi());
845 fDenominator->Fill(pt,theta,phi,weight);
847 /*************************************************************/
849 TH1* AliHBTPairPIDProbVsPtThetaPhiFctn::GetResult()
851 //returns the scaled ratio
854 fRatio = GetRatio(Scale());
857 fRatio->GetXaxis()->SetTitle("\\Delta P_{t} [GeV]");
858 fRatio->GetYaxis()->SetTitle("\\Delta \\theta [rad]");
859 fRatio->GetZaxis()->SetTitle("\\Delta \\phi [rad]");