Initial check-in of the model classes
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / Model / AliFemtoModelWeightGenerator.h
1 ////////////////////////////////////////////////////////////////////////////////
2 ///                                                                          ///
3 /// AliFemtoModelWeightGenerator - abstract base class for femtoscopic       ///
4 /// weight generator                                                         ///
5 /// Authors: Adam Kisiel kisiel@mps.ohio-state.edu                           ///
6 ///                                                                          ///
7 ////////////////////////////////////////////////////////////////////////////////
8 #ifndef AliFemtoModelWeightGenerator_hh
9 #define AliFemtoModelWeightGenerator_hh
10
11 #include "TRandom2.h"
12 #include "AliFemtoPair.h"
13
14 class AliFemtoModelWeightGenerator 
15 {
16  public:
17   AliFemtoModelWeightGenerator();
18   AliFemtoModelWeightGenerator(const AliFemtoModelWeightGenerator &aModel);
19   virtual ~AliFemtoModelWeightGenerator();
20   virtual Double_t GenerateWeight(AliFemtoPair *aPair) = 0;
21
22   virtual void     SetPairType(Int_t aPairType);
23   virtual void     SetPairTypeFromPair(AliFemtoPair *aPair);
24   virtual Int_t    GetPairType();
25
26   virtual Double_t GetKStar();
27   virtual Double_t GetKStarOut();
28   virtual Double_t GetKStarSide();
29   virtual Double_t GetKStarLong();
30   virtual Double_t GetRStar();
31   virtual Double_t GetRStarOut();
32   virtual Double_t GetRStarSide();
33   virtual Double_t GetRStarLong();
34
35   virtual AliFemtoModelWeightGenerator* Clone() const;
36
37   static const Int_t kPionPlusPionPlus;
38   static const Int_t kPionPlusPionMinus;
39   static const Int_t kKaonPlusKaonPlus;
40   static const Int_t kKaonPlusKaonMinus;
41   static const Int_t kProtonProton;
42   static const Int_t kProtonAntiproton;
43   static const Int_t kPionPlusKaonPlus;
44   static const Int_t kPionPlusKaonMinus;
45   static const Int_t kPionPlusProton;
46   static const Int_t kPionPlusAntiproton;
47   static const Int_t kKaonPlusProton;
48   static const Int_t kKaonPlusAntiproton;
49
50  protected:
51   Int_t fPairType;
52
53   Double_t fKStarOut;  // relative momentum out component in PRF
54   Double_t fKStarSide; // relative momentum side component in PRF
55   Double_t fKStarLong; // relative momentum long component in PRF
56   Double_t fKStar;     // relative momentum magnitude
57
58   Double_t fRStarOut;  // relative separation out component in PRF
59   Double_t fRStarSide; // relative separation side component in PRF
60   Double_t fRStarLong; // relative separation long component in PRF
61   Double_t fRStar;     // relative separation magnitude
62  private:
63   
64 #ifdef __ROOT__
65   ClassDef(AliFemtoModelWeightGenerator, 1)
66 #endif
67
68     };
69   
70 inline Double_t AliFemtoModelWeightGenerator::GetKStar() { return fKStar; }
71 inline Double_t AliFemtoModelWeightGenerator::GetKStarOut() { return fKStarOut; }
72 inline Double_t AliFemtoModelWeightGenerator::GetKStarSide() { return fKStarSide; }
73 inline Double_t AliFemtoModelWeightGenerator::GetKStarLong() { return fKStarLong; }
74 inline Double_t AliFemtoModelWeightGenerator::GetRStar() { return fRStar; }
75 inline Double_t AliFemtoModelWeightGenerator::GetRStarOut() { return fRStarOut; }
76 inline Double_t AliFemtoModelWeightGenerator::GetRStarSide() { return fRStarSide; }
77 inline Double_t AliFemtoModelWeightGenerator::GetRStarLong() { return fRStarLong; }
78
79
80 #endif
81
82