798bafd9eefb5015abcc84bd2dd7a403ffd4cf8e
[u/mrichter/AliRoot.git] / HBTAN / AliHBTWeightTheorFctn.h
1 #ifndef ALIHBTWeightTHEORFCTN_H
2 #define ALIHBTWeightTHEORFCTN_H
3 /* $Id$ */
4 //_____________________________________________________________________________
5 ///////////////////////////////////////////////////////////////////////////////
6 //
7 // class AliHBTWeightTheorQInvFctn
8 //
9 // This function allows to obtain Q_inv correlation function with weights
10 // calculated by Lednicky's alghorithm.
11 // Numerator is filled with weighted events. Weights are attributed to simulated particles.
12 // Weights are calculated with corresponding simulated particles momenta.
13 // Denominator is filled with mixing unweighted simulated particles.
14 // One needs only simulated pairs, so 
15 // this function is of class AliHBTOnePairFctn1D.
16 // Author Ludmila Malinina JINR (malinina@sunhe.jinr.ru)
17 //
18 ///////////////////////////////////////////////////////////////////////////////
19
20 #include "AliHBTFunction.h"
21
22 class AliHBTWeights;
23
24 class AliHBTWeightTheorQInvFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
25 {
26   public:
27     AliHBTWeightTheorQInvFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
28     virtual  ~AliHBTWeightTheorQInvFctn(){}
29
30     TH1* GetResult(); 
31     void   ProcessSameEventParticles(AliHBTPair* partpair);
32
33   protected:
34     Double_t GetValue(AliHBTPair* partpair) const
35       { return partpair->GetQInv();} 
36
37     ClassDef(AliHBTWeightTheorQInvFctn,2)
38 };
39 /*************************************************************/
40
41 class AliHBTWeightTheorQOutFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
42 {
43
44   public:
45     AliHBTWeightTheorQOutFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
46     virtual  ~AliHBTWeightTheorQOutFctn(){}
47
48     TH1* GetResult(); 
49     void   ProcessSameEventParticles(AliHBTPair* partpair);
50
51   protected:
52     Double_t GetValue(AliHBTPair* partpair) const
53       { return partpair->GetQOutLCMS();}
54
55     ClassDef(AliHBTWeightTheorQOutFctn,2)
56 };
57 /*************************************************************/
58
59 class AliHBTWeightTheorQSideFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
60 {
61   public:
62     AliHBTWeightTheorQSideFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
63     virtual  ~AliHBTWeightTheorQSideFctn(){}
64
65     TH1* GetResult(); 
66     void   ProcessSameEventParticles(AliHBTPair* partpair);
67     
68   protected:
69     Double_t GetValue(AliHBTPair* partpair) const
70       { return partpair->GetQSideLCMS();} 
71
72     ClassDef(AliHBTWeightTheorQSideFctn,2)
73 };
74 /*************************************************************/
75
76 class AliHBTWeightTheorQLongFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
77 {
78   public:
79     AliHBTWeightTheorQLongFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
80     virtual  ~AliHBTWeightTheorQLongFctn(){}
81
82     TH1* GetResult(); 
83     void   ProcessSameEventParticles(AliHBTPair* partpair);
84   
85   protected:
86     Double_t GetValue(AliHBTPair* partpair) const
87       { return partpair->GetQLongLCMS();} 
88
89     ClassDef(AliHBTWeightTheorQLongFctn,2)
90 };
91
92 /*************************************************************/
93
94 class AliHBTWeightTheorQtFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
95 {
96   public:
97     AliHBTWeightTheorQtFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
98     virtual  ~AliHBTWeightTheorQtFctn(){}
99
100     TH1* GetResult(); 
101     void   ProcessSameEventParticles(AliHBTPair* partpair);
102   
103   protected:
104     Double_t GetValue(AliHBTPair* partpair) const
105       { return partpair->GetQt();} 
106
107     ClassDef(AliHBTWeightTheorQtFctn,2)
108 };
109
110 /*************************************************************/
111
112 class AliHBTWeightTheorOSLFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
113 {
114
115   public:
116     AliHBTWeightTheorOSLFctn(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
117                              Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
118                  Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
119     virtual  ~AliHBTWeightTheorOSLFctn(){}
120
121     TH1* GetResult();
122     void   ProcessSameEventParticles(AliHBTPair* partpair);
123   
124   protected:
125     void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y, Double_t& z) const
126       { x=TMath::Abs(pair->GetQOutLCMS()); y=TMath::Abs(pair->GetQSideLCMS()); z=TMath::Abs(pair->GetQLongLCMS());} 
127
128     ClassDef(AliHBTWeightTheorOSLFctn,2)
129 };
130     
131 #endif