b84d5e255436dba4274ecef7fd8ae9456483b695
[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    trackpair = CheckPair(trackpair);
35    if(trackpair == 0x0) return; 
36    
37    Double_t q = trackpair->GetQInv();
38    Bool_t fill = kFALSE;
39    
40    Double_t weight = AliHBTLLWeights::Instance()->GetWeight(partpair);
41    fNumerator->Fill(q,weight);
42    
43    if ( (q < 0.15) && (fNPairsFitArea < 2.e+5))
44      {
45        fNPairsFitArea++;
46        fill = kTRUE;
47      }
48
49    if ( (q > 0.15) && (q < 0.3) && (fNPairsFitArea < 1.e+5))
50      {
51        fNPairsNormArea++;
52        fill = kTRUE;
53      }
54    
55    if (fill)
56     {  
57       const AliHBTParticle& p1 = *(trackpair->Particle1());
58       const AliHBTParticle& p2 = *(trackpair->Particle2());
59       fNtuple->Fill(p1.Px(),p1.Py(),p1.Pz(),p1.Energy(),
60                     p2.Px(),p2.Py(),p2.Pz(),p2.Energy());
61     }
62 }
63 /****************************************************************/
64
65 void  AliHBTCorrFitFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
66 {
67   // Fills the denominator using mixed pairs
68   trackpair = CheckPair(trackpair);
69   partpair  = CheckPair(partpair);
70   if ( trackpair && partpair)
71   {
72      fDenominator->Fill(trackpair->GetQInv());
73   }
74 }
75 /*****************************************************************/
76
77 TH1* AliHBTCorrFitFctn::GetResult()
78 {
79 //returns ratio of numerator and denominator
80  return GetRatio(Scale());
81 }
82 /**************************************************************/
83
84 void AliHBTCorrFitFctn::WriteFunction()
85 {
86   //writes a function 
87   AliHBTFunction::WriteFunction();
88   fNtuple->Write(0,TObject::kOverwrite);
89 }