CorrFit function added.
[u/mrichter/AliRoot.git] / HBTAN / AliHBTCorrFitFctn.cxx
1 #include "AliHBTCorrFitFctn.h"
2 //____________________________________________________________
3 ///////////////////////////////////////////////////////////////
4 //                                                           //
5 // class AliHBTCorrFitFctn                                   //
6 //                                                           //
7 //                                                           //
8 ///////////////////////////////////////////////////////////////
9
10 #include "AliHBTLLWeights.h"
11
12
13 ClassImp(AliHBTCorrFitFctn)
14
15 /*****************************************************************/
16
17 AliHBTCorrFitFctn::AliHBTCorrFitFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
18  AliHBTTwoPairFctn1D(nbins,maxXval,minXval),
19  fNtuple(new TNtuple("pair", "pair", "px1:py1:pz1:e1:px2:py2:pz2:e2")),
20  fNPairsFitArea(0),
21  fNPairsNormArea(0)
22 {
23 //ctor
24  fWriteNumAndDen = kTRUE;//change default behaviour
25  Rename("wqinvcfCorrFit","Lednicky Weught Theoretical Q_{inv} Correlation Function");
26
27 /*****************************************************************/
28
29 void AliHBTCorrFitFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
30 {
31  //Fills the numerator using pair from the same event
32    partpair = CheckPair(partpair);
33    if(partpair == 0x0) return; 
34    
35    Double_t q = trackpair->GetQInv();
36    Bool_t fill = kFALSE;
37    
38    if ( (q < 0.15) && (fNPairsFitArea < 2.e+5))
39      {
40        fNPairsFitArea++;
41        fill = kTRUE;
42      }
43
44    if ( (q > 0.15) && (q < 0.3) && (fNPairsFitArea < 1.e+5))
45      {
46        fNPairsNormArea++;
47        fill = kTRUE;
48      }
49    
50    if (fill)
51     {  
52       Double_t weight = AliHBTLLWeights::Instance()->GetWeight(partpair);
53       fNumerator->Fill(q,weight);
54       const AliHBTParticle& p1 = *(trackpair->Particle1());
55       const AliHBTParticle& p2 = *(trackpair->Particle2());
56       fNtuple->Fill(p1.Px(),p1.Py(),p1.Pz(),p1.Energy(),
57         p2.Px(),p2.Py(),p2.Pz(),p2.Energy());
58     }
59 }
60 /****************************************************************/
61
62 void  AliHBTCorrFitFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
63 {
64   // Fills the denominator using mixed pairs
65   trackpair = CheckPair(trackpair);
66   partpair  = CheckPair(partpair);
67   if ( trackpair && partpair)
68   {
69      fDenominator->Fill(trackpair->GetQInv());
70   }
71 }
72 /*****************************************************************/
73
74 TH1* AliHBTCorrFitFctn::GetResult()
75 {
76 //returns ratio of numerator and denominator
77  return GetRatio(Scale());
78 }
79 /**************************************************************/
80
81 void AliHBTCorrFitFctn::WriteFunction()
82 {
83   //writes a function 
84   AliHBTFunction::WriteFunction();
85   fNtuple->Write(0,TObject::kOverwrite);
86 }