1c5dfb55a9851ddd1d406f13dae91c0b88ab0d0e
[u/mrichter/AliRoot.git] / HBTAN / AliHBTWeightasCorrFctn.h
1 #ifndef ALIHBTWEIGHTASCORRFCTN_H
2 #define ALIHBTWEIGHTASCORRFCTN_H
3
4 ///////////////////////////////////////////////////////
5 //                                                   //
6 // AliHBTWeightasCorrFctn.h                           //
7 //                                                   //
8 // Class for calculating 3D Weightas correlation       //
9 // functions                                         //
10 // author: Grzegorz.Galazka@cern.ch                  //
11 ///////////////////////////////////////////////////////
12
13 #include "AliHBTFunction.h"
14
15  
16 class AliHBTWeightasCorrFctn: public AliHBTTwoPairFctn1D
17 {
18 public:
19      AliHBTWeightasCorrFctn(const char* name = "asejdzbitiCF", 
20                        const char* title= "as Correlation Function");
21
22      AliHBTWeightasCorrFctn(const char* name, const char* title,
23                        Int_t nbins, Float_t maxXval, Float_t minXval);
24      AliHBTWeightasCorrFctn(const AliHBTWeightasCorrFctn& in);
25      
26      virtual ~AliHBTWeightasCorrFctn();
27      
28      void Init();
29      void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
30      void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
31     
32      void Write();
33      
34      void SetNumberOfIntervals(Int_t N){fNumberOfIntervals = N;}
35      
36      Int_t GetNumberOfIntervals() const {return fNumberOfIntervals;}
37     
38      
39      TH1*     GetResult();
40    
41 protected:
42      
43      virtual Double_t GetValue(AliHBTPair* tpair, AliHBTPair* ppair) const = 0;
44      virtual void BuildHistos() = 0;
45      
46      void SetParams(Int_t nbins,Float_t maxXval,Float_t minXval);
47      int Getnbins() const { return fnbins;}
48      double GetmaxXval() const {return fmaxXval;}
49      double GetminXval() const {return fminXval;}
50      
51      TObjArray* fNum; // numerators array
52      TObjArray* fDen; // denominators array
53      TObjArray* fRat;// correl. fnctns array
54      
55      
56 private:
57      int fnbins; //number of bins in histograms
58      Int_t fNumberOfIntervals;   //number of intervals
59      double fmaxXval; //max histogram's X value 
60      double fminXval; //min histogram's X value
61      
62      ClassDef(AliHBTWeightasCorrFctn,1)
63 };
64
65 class AliHBTQOutWeightasCorrFctn: public AliHBTWeightasCorrFctn{
66 public:
67      AliHBTQOutWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
68      
69      virtual  ~AliHBTQOutWeightasCorrFctn(){};
70     
71      
72 protected:
73      Double_t GetValue(AliHBTPair* pair, AliHBTPair* ppair) const {ppair=0; return TMath::Abs(pair->GetQOutLCMS());}
74      void BuildHistos();
75 private:   
76      ClassDef(AliHBTQOutWeightasCorrFctn,1)
77 };
78
79 class AliHBTQSideWeightasCorrFctn: public AliHBTWeightasCorrFctn{
80 public:
81      AliHBTQSideWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
82      virtual  ~AliHBTQSideWeightasCorrFctn(){};
83          
84 protected:
85      Double_t GetValue(AliHBTPair* pair, AliHBTPair* ppair) const {ppair=0;return TMath::Abs(pair->GetQSideLCMS());}
86      void BuildHistos();
87 private:   
88      ClassDef(AliHBTQSideWeightasCorrFctn,1)
89 };
90
91
92 class AliHBTQLongWeightasCorrFctn: public AliHBTWeightasCorrFctn{
93 public:
94      AliHBTQLongWeightasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
95
96      virtual  ~AliHBTQLongWeightasCorrFctn(){};
97      
98 protected:
99      Double_t GetValue(AliHBTPair* pair,AliHBTPair* ppair) const {ppair=0;return TMath::Abs(pair->GetQLongLCMS());}
100      void BuildHistos();
101 private:   
102      ClassDef(AliHBTQLongWeightasCorrFctn,1)
103 };
104
105 /********************************************************************************************************/
106 class AliHBTasWeightQOSLCorrFctn: public AliHBTTwoPairFctn3D
107 {
108         public:
109      AliHBTasWeightQOSLCorrFctn(const char* name = "asejdzbiti3dCF", 
110                        const char* title= "as 3d Correlation Function");
111
112      AliHBTasWeightQOSLCorrFctn(const char* name, const char* title,Int_t nXbins , Double_t maxXval , Double_t minXval ,
113                      Int_t nYbins, Double_t maxYval, Double_t minYval ,
114                      Int_t nZbins, Double_t maxZval, Double_t minZval);
115      
116      AliHBTasWeightQOSLCorrFctn(const AliHBTasWeightQOSLCorrFctn& in);
117      
118      virtual ~AliHBTasWeightQOSLCorrFctn();
119      
120      void Init();
121      void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
122      void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
123     
124      void Write();
125              
126     void SetNumberOfIntervals(Int_t N){fNumberOfIntervals = N;}
127      
128      Int_t GetNumberOfIntervals(){return fNumberOfIntervals;}
129      
130      
131      TH1*     GetResult();
132    
133 protected:
134      
135      Double_t GetValue(AliHBTPair* tpair, AliHBTPair* ppair);
136      void BuildHistos();
137      void GetValues(AliHBTPair*, AliHBTPair*, Double_t&,Double_t&, Double_t&) const {};
138      void SetParams(Int_t nXbins,Float_t maxXval,Float_t minXval,Int_t nYbins,Float_t maxYval,Float_t minYval,Int_t nZbins,Float_t maxZval,Float_t minZval);
139      
140      int GetnXbins(){ return fnXbins;}
141      double GetmaxXval(){return fmaxXval;}
142      double GetminXval(){return fminXval;}
143      
144      int GetnYbins(){ return fnYbins;}
145      double GetmaxYval(){return fmaxYval;}
146      double GetminYval(){return fminYval;}
147      
148      int GetnZbins(){ return fnZbins;}
149      double GetmaxZval(){return fmaxZval;}
150      double GetminZval(){return fminZval;}
151      
152 Double_t Scale(TH3D* num, TH3D *den);   
153
154      TObjArray* fNum; // numerators array
155      TObjArray* fDen; // denominators array
156      TObjArray* fRat;// correl. fnctns array
157      
158      
159 private:
160      int fnXbins; //number of bins in histograms
161      Int_t fNumberOfIntervals;   //number of intervals
162      double fmaxXval; //max histogram's X value 
163      double fminXval; //min histogram's X value
164      int fnYbins;
165      int fnZbins;
166       double fmaxYval; //max histogram's X value 
167      double fminYval; //min histogram's X value
168   double fmaxZval; //max histogram's X value 
169      double fminZval; //min histogram's X value
170  
171      
172      ClassDef(AliHBTasWeightQOSLCorrFctn,1)
173 };
174
175
176 #endif