bef8824beb932f933f28b789441da4bebfd791c7
[u/mrichter/AliRoot.git] / HBTAN / AliHBTCorrelFctn.h
1 #ifndef ALIHBTCORRELFUNCTION_H
2 #define ALIHBTCORRELFUNCTION_H
3 //____________________________________________________________________________
4 //////////////////////////////////////////////////////////////////////////////
5 //
6 // class AliHBTQInvCorrelFctn
7 // class AliHBTQOutLCMSCorrelFctn
8 // class AliHBTQLongLCMSCorrelFctn
9 // class AliHBTQSideLCMSCorrelFctn
10 // class AliHBTInvMassCorrelFctn
11 // class AliHBTTwoKStarCorrelFctn
12 //
13 // Set of functions:
14 //   Q Invaraint Correlation Function
15 //   Invariant Mass Function
16 //
17 // more info: http://aliweb.cern.ch/people/skowron/analyzer/index.html
18 // Piotr.Skowronski@cern.ch
19 //
20 //////////////////////////////////////////////////////////////////////////////
21
22 #include "AliHBTFunction.h"
23 #include <Riostream.h>
24
25 /*************************************************************************************/ 
26 class AliHBTQInvCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
27 {
28 //Q Invaraint Correlation Function
29 //1D two particle function 
30  public:
31    AliHBTQInvCorrelFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
32    virtual ~AliHBTQInvCorrelFctn(){};
33    TH1* GetResult();
34  protected:
35    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQInv();}
36  private:  
37    ClassDef(AliHBTQInvCorrelFctn,2)
38  
39 };
40 /*************************************************************/
41
42 class AliHBTOutSideLongFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
43 {
44
45   public:
46     AliHBTOutSideLongFctn(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
47                           Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
48               Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
49     virtual  ~AliHBTOutSideLongFctn(){}
50
51     TH1* GetResult();
52     void UseAbsoluteValues(Bool_t flag){fAbs = flag;}
53  
54   protected:
55     void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y, Double_t& z) const;
56     
57     Bool_t fAbs;//flag indicating if absolute values of qout, qside and qlong should be histogrammed
58   ClassDef(AliHBTOutSideLongFctn,1)
59 };
60
61 /*************************************************************************************/ 
62
63 class AliHBTQOutLCMSCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
64 {
65 //Q OutLCMSaraint Correlation Function
66 //1D two particle function 
67  public:
68    AliHBTQOutLCMSCorrelFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
69    virtual ~AliHBTQOutLCMSCorrelFctn(){};
70    TH1* GetResult();
71  protected:
72    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQOutLCMS();}
73  private:  
74     ClassDef(AliHBTQOutLCMSCorrelFctn,2)
75 };
76 /*************************************************************************************/ 
77
78 class AliHBTQLongLCMSCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
79 {
80 //Q LongLCMSaraint Correlation Function
81 //1D two particle function 
82  public:
83    AliHBTQLongLCMSCorrelFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
84    virtual ~AliHBTQLongLCMSCorrelFctn(){};
85    TH1* GetResult();
86  protected:
87    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQLongLCMS();}
88  private:  
89     ClassDef(AliHBTQLongLCMSCorrelFctn,2)
90 };
91 /*************************************************************************************/ 
92
93 class AliHBTQSideLCMSCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
94 {
95 //Q SideLCMSaraint Correlation Function
96 //1D two particle function 
97  public:
98    AliHBTQSideLCMSCorrelFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
99    virtual ~AliHBTQSideLCMSCorrelFctn(){}
100    TH1* GetResult();
101  protected:
102    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQSideLCMS();}
103  private:  
104     ClassDef(AliHBTQSideLCMSCorrelFctn,2)
105 };
106 /*************************************************************************************/ 
107
108 class AliHBTInvMassCorrelFctn: public AliHBTOnePairFctn1D
109 {
110 //   Invariant Mass Function 
111  public:
112    AliHBTInvMassCorrelFctn(Int_t nbins = 2000, Double_t maxXval = 2., Double_t minXval = 0.0);
113    virtual ~AliHBTInvMassCorrelFctn(){};
114    TH1* GetResult();
115  protected:
116    Double_t GetValue(AliHBTPair * pair) const { return pair->GetInvMass();}
117  private:  
118     ClassDef(AliHBTInvMassCorrelFctn,1)
119 };
120
121 /*************************************************************************************/ 
122
123 class AliHBTTwoKStarCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
124 {
125 //   Correlation Function of 2*KStar
126  public:
127    AliHBTTwoKStarCorrelFctn(Int_t nbins = 200, Double_t maxXval = 0.15, Double_t minXval = 0.0);
128    virtual ~AliHBTTwoKStarCorrelFctn(){};
129    TH1* GetResult();
130  protected:
131    Double_t GetValue(AliHBTPair * pair) const { return 2.0*pair->GetKStar();}
132  private:  
133     ClassDef(AliHBTTwoKStarCorrelFctn,2)
134 };
135
136 /*************************************************************************************/ 
137
138 class AliHBTAvSeparCorrelFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
139 {
140 //   Correlation Function of 2*KStar
141  public:
142    AliHBTAvSeparCorrelFctn(Int_t nbins = 200, Double_t maxXval = 30, Double_t minXval = 0.0);
143    virtual ~AliHBTAvSeparCorrelFctn(){};
144    TH1* GetResult();
145  protected:
146    Double_t GetValue(AliHBTPair * pair) const { return pair->GetAvarageDistance();}
147  private:  
148     ClassDef(AliHBTAvSeparCorrelFctn,2)
149 };
150
151 #endif