]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoModelWeightGenerator.h
Migration of PWG2/FEMTOSCOPY to PWGCF/FEMTOSCOPY
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / 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_H
9 #define ALIFEMTOMODELWEIGHTGENERATOR_H
10
11 #include "TRandom2.h"
12 class AliFemtoPair;
13
14 class AliFemtoModelWeightGenerator 
15 {
16  public:
17   AliFemtoModelWeightGenerator();
18   AliFemtoModelWeightGenerator(const AliFemtoModelWeightGenerator &aModel);
19   virtual ~AliFemtoModelWeightGenerator();
20   AliFemtoModelWeightGenerator& operator=(const AliFemtoModelWeightGenerator &aModel);
21   virtual Double_t GenerateWeight(AliFemtoPair *aPair) = 0;
22
23   virtual void     SetPairType(Int_t aPairType);
24   virtual void     SetPairTypeFromPair(AliFemtoPair *aPair);
25   virtual Int_t    GetPairType() const;
26   virtual Int_t    GetPairTypeFromPair(AliFemtoPair *aPair);
27
28   virtual Double_t GetKStar() const;
29   virtual Double_t GetKStarOut() const;
30   virtual Double_t GetKStarSide() const;
31   virtual Double_t GetKStarLong() const;
32   virtual Double_t GetRStar() const;
33   virtual Double_t GetRStarOut() const;
34   virtual Double_t GetRStarSide() const;
35   virtual Double_t GetRStarLong() const;
36
37   virtual AliFemtoModelWeightGenerator* Clone() const;
38
39   static Int_t PionPlusPionPlus();  
40   static Int_t PionPlusPionMinus(); 
41   static Int_t KaonPlusKaonPlus();  
42   static Int_t KaonPlusKaonMinus(); 
43   static Int_t ProtonProton();      
44   static Int_t ProtonAntiproton();  
45   static Int_t PionPlusKaonPlus();  
46   static Int_t PionPlusKaonMinus(); 
47   static Int_t PionPlusProton();    
48   static Int_t PionPlusAntiproton();
49   static Int_t KaonPlusProton();    
50   static Int_t KaonPlusAntiproton();
51   static Int_t PairTypeNone();
52
53  protected:
54   static const Int_t fgkPairTypeNone;      // no pair type set - read from model
55   static const Int_t fgkPionPlusPionPlus;  // identical pion pair
56   static const Int_t fgkPionPlusPionMinus; // non-identical pion pair
57   static const Int_t fgkKaonPlusKaonPlus;  // identical kaon pair
58   static const Int_t fgkKaonPlusKaonMinus; // non-identical kaon pair
59   static const Int_t fgkProtonProton;      // identical proton pair
60   static const Int_t fgkProtonAntiproton;  // non-identical proton pair
61   static const Int_t fgkPionPlusKaonPlus;  // same-charge pion kaon pair
62   static const Int_t fgkPionPlusKaonMinus; // opposite-charge pion kaon pair
63   static const Int_t fgkPionPlusProton;    // same-charge pion proton pair
64   static const Int_t fgkPionPlusAntiproton;// opposite-chare pion proton pair
65   static const Int_t fgkKaonPlusProton;    // same-charge kaon proton pair
66   static const Int_t fgkKaonPlusAntiproton;// opposite-charge kaon proton pair
67
68   Int_t fPairType;     // Type of the pair for which the calculation is done
69
70   Double_t fKStarOut;  // relative momentum out component in PRF
71   Double_t fKStarSide; // relative momentum side component in PRF
72   Double_t fKStarLong; // relative momentum long component in PRF
73   Double_t fKStar;     // relative momentum magnitude
74
75   Double_t fRStarOut;  // relative separation out component in PRF
76   Double_t fRStarSide; // relative separation side component in PRF
77   Double_t fRStarLong; // relative separation long component in PRF
78   Double_t fRStar;     // relative separation magnitude
79  private:
80   
81 #ifdef __ROOT__
82   ClassDef(AliFemtoModelWeightGenerator, 1)
83 #endif
84
85     };
86   
87 inline Double_t AliFemtoModelWeightGenerator::GetKStar() const { return fKStar; }
88 inline Double_t AliFemtoModelWeightGenerator::GetKStarOut() const { return fKStarOut; }
89 inline Double_t AliFemtoModelWeightGenerator::GetKStarSide() const { return fKStarSide; }
90 inline Double_t AliFemtoModelWeightGenerator::GetKStarLong() const { return fKStarLong; }
91 inline Double_t AliFemtoModelWeightGenerator::GetRStar() const { return fRStar; }
92 inline Double_t AliFemtoModelWeightGenerator::GetRStarOut() const { return fRStarOut; }
93 inline Double_t AliFemtoModelWeightGenerator::GetRStarSide() const { return fRStarSide; }
94 inline Double_t AliFemtoModelWeightGenerator::GetRStarLong() const { return fRStarLong; }
95
96 inline Int_t AliFemtoModelWeightGenerator::PairTypeNone() { return fgkPairTypeNone; }  
97 inline Int_t AliFemtoModelWeightGenerator::PionPlusPionPlus() { return fgkPionPlusPionPlus; }  
98 inline Int_t AliFemtoModelWeightGenerator::PionPlusPionMinus() { return fgkPionPlusPionMinus; } 
99 inline Int_t AliFemtoModelWeightGenerator::KaonPlusKaonPlus() { return fgkKaonPlusKaonPlus; }  
100 inline Int_t AliFemtoModelWeightGenerator::KaonPlusKaonMinus() { return fgkKaonPlusKaonMinus; } 
101 inline Int_t AliFemtoModelWeightGenerator::ProtonProton() { return fgkProtonProton; }      
102 inline Int_t AliFemtoModelWeightGenerator::ProtonAntiproton() { return fgkProtonAntiproton; }  
103 inline Int_t AliFemtoModelWeightGenerator::PionPlusKaonPlus() { return fgkPionPlusKaonPlus; }  
104 inline Int_t AliFemtoModelWeightGenerator::PionPlusKaonMinus() { return fgkPionPlusKaonMinus; } 
105 inline Int_t AliFemtoModelWeightGenerator::PionPlusProton() { return fgkPionPlusProton; }    
106 inline Int_t AliFemtoModelWeightGenerator::PionPlusAntiproton() { return fgkPionPlusAntiproton; }
107 inline Int_t AliFemtoModelWeightGenerator::KaonPlusProton() { return fgkKaonPlusProton; }    
108 inline Int_t AliFemtoModelWeightGenerator::KaonPlusAntiproton() { return fgkKaonPlusAntiproton; }
109
110 #endif
111
112