Updates in GRP Preprocessor (Ernesto)
[u/mrichter/AliRoot.git] / HBTAN / AliHBTasCorrFctn.h
1 #ifndef ALIHBTASCORRFCTN_H
2 #define ALIHBTASCORRFCTN_H
3
4 ///////////////////////////////////////////////////////
5 //                                                   //
6 // AliHBTasCorrFctn.h                                //
7 //                                                   //
8 // Class for calculating 3D as correlation           //
9 // functions                                         //
10 //author: Grzegorz.Galazka@cern.ch                   //
11 ///////////////////////////////////////////////////////
12
13 #include "AliHBTFunction.h"
14
15  
16 class AliHBTasCorrFctn: public AliHBTOnePairFctn1D
17 {
18 public:
19      AliHBTasCorrFctn(const char* name = "asejdzbitiCF", 
20                        const char* title= "as Correlation Function");
21
22      AliHBTasCorrFctn(const char* name, const char* title,
23                        Int_t nbins, Float_t maxXval, Float_t minXval);
24      AliHBTasCorrFctn(const AliHBTasCorrFctn& in);
25      
26      virtual ~AliHBTasCorrFctn();
27      
28      void Init();
29      void ProcessSameEventParticles(AliHBTPair* pair);
30      void ProcessDiffEventParticles(AliHBTPair* pair);
31      Int_t Write(const char* /*x1*/ = "",Int_t /*x2*/ = 0, Int_t /*x3*/ = 0);
32      Int_t Write(const char* x1 = "",Int_t x2 = 0, Int_t x3 = 0) const {return AliHBTOnePairFctn1D::Write(x1,x2,x3);}
33      
34      void SetNumberOfIntervals(Int_t N){fNumberOfIntervals = N;}
35      
36      Int_t GetNumberOfIntervals(){return fNumberOfIntervals;}
37     
38      
39      TH1*     GetResult();
40    
41 protected:
42      
43      virtual Double_t GetValue(AliHBTPair* pair) const = 0; 
44      virtual void BuildHistos() = 0; 
45      void BuildHistos(Int_t nbins, Float_t max, Float_t min) {
46        AliHBTOnePairFctn1D::BuildHistos(nbins, max, min);
47      }
48      int Getnbins(){ return fnbins;}         // this are workarounds for my lame coding
49      double GetmaxXval(){return fmaxXval;}   // these methods are uset to build histograms 
50      double GetminXval(){return fminXval;}   // with set by user number of bins etc. 
51      void SetParams(Int_t nbins,Float_t maxXval,Float_t minXval); //
52      
53      TObjArray* fNum; // numerators array
54      TObjArray* fDen; // denominators array
55      TObjArray* fRat;// correl. fnctns array
56      
57      
58 private:
59      int fnbins; //number of bins in histograms
60      Int_t fNumberOfIntervals;   //number of intervals
61      double fmaxXval; //max histogram's X value 
62      double fminXval; //min histogram's X value
63
64      AliHBTasCorrFctn& operator=(const AliHBTasCorrFctn&); // Not implemented
65      
66      ClassDef(AliHBTasCorrFctn,1)
67 };
68
69 class AliHBTQOutasCorrFctn: public AliHBTasCorrFctn{
70 public:
71      AliHBTQOutasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
72      
73      virtual  ~AliHBTQOutasCorrFctn(){};
74     
75      
76 protected:
77      Double_t GetValue(AliHBTPair* pair) const {return pair->GetQOutLCMS();}
78      void BuildHistos(Int_t nbins, Float_t max, Float_t min) {
79        AliHBTasCorrFctn::BuildHistos(nbins, max, min);
80      }
81      void BuildHistos();
82 private:   
83      ClassDef(AliHBTQOutasCorrFctn,1)
84 };
85
86 class AliHBTQSideasCorrFctn: public AliHBTasCorrFctn{
87 public:
88      AliHBTQSideasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
89 //     AliHBTSideasCorrFctn(const AliHBTasCorrFctn& in);
90      
91      virtual  ~AliHBTQSideasCorrFctn(){};
92          
93 protected:
94      Double_t GetValue(AliHBTPair* pair) const {return pair->GetQSideLCMS();} 
95      void BuildHistos(Int_t nbins, Float_t max, Float_t min) {
96        AliHBTasCorrFctn::BuildHistos(nbins, max, min);
97      }
98      void BuildHistos();
99 private:   
100      ClassDef(AliHBTQSideasCorrFctn,1)
101 };
102
103
104 class AliHBTQLongasCorrFctn: public AliHBTasCorrFctn{
105 public:
106      AliHBTQLongasCorrFctn(const char* name, const char* title, Int_t nbins, Float_t maxXval, Float_t minXval);
107
108      virtual  ~AliHBTQLongasCorrFctn(){};
109      
110 protected:
111      Double_t GetValue(AliHBTPair* pair) const {return pair->GetQLongLCMS();}
112      void BuildHistos(Int_t nbins, Float_t max, Float_t min) {
113        AliHBTasCorrFctn::BuildHistos(nbins, max, min);
114      }
115      void BuildHistos();
116 private:   
117      ClassDef(AliHBTQLongasCorrFctn,1)
118 };
119
120
121 #endif