Adding Lednicky's weight generator
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoModelWeightGeneratorLednicky.h
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 // AliFemtoModelWeightGeneratorLednicky : the most advanced weight       //
4 // generator available. Supports a large number of different pair types  //
5 // and interaction types. Can calculate pair weights coming from         //
6 // quantum statistics, coulomb interation and strong interaction ot any  //
7 // combination of the three, as applicable.                              //
8 //                                                                       //
9 ///////////////////////////////////////////////////////////////////////////
10
11 #ifndef ALIFEMTOMODELWEIGHTGENERATORLEDNICKY_H
12 #define ALIFEMTOMODELWEIGHTGENERATORLEDNICKY_H
13
14 #include "AliFemtoTypes.h"
15 #include "AliFemtoModelWeightGenerator.h"
16
17 class AliFemtoModelWeightGeneratorLednicky : public  AliFemtoModelWeightGenerator {
18  public: 
19 // --- Constructor
20   AliFemtoModelWeightGeneratorLednicky(); // call SetDefaultCalcPar
21   AliFemtoModelWeightGeneratorLednicky(const AliFemtoModelWeightGeneratorLednicky &aWeight); // call SetDefaultCalcPar
22 // --- Destructor : nothing to explicitly delete
23   AliFemtoModelWeightGeneratorLednicky& operator=(const AliFemtoModelWeightGeneratorLednicky& aWeight);
24   ~AliFemtoModelWeightGeneratorLednicky();
25
26   virtual Double_t GenerateWeight(AliFemtoPair *aPair);
27
28   virtual void     SetPairType(Int_t aPairType);
29   virtual void     SetPairTypeFromPair(AliFemtoPair *aPair);
30   virtual Int_t    GetPairType() const;
31
32   virtual Double_t GetKStar() const;
33   virtual Double_t GetKStarOut() const;
34   virtual Double_t GetKStarSide() const;
35   virtual Double_t GetKStarLong() const;
36   virtual Double_t GetRStar() const;
37   virtual Double_t GetRStarOut() const;
38   virtual Double_t GetRStarSide() const;
39   virtual Double_t GetRStarLong() const;
40
41   virtual AliFemtoModelWeightGenerator* Clone() const;
42
43 // --- Setting
44
45 // >>> Calculation mode
46   void SetDefaultCalcPar(); // Default is CoulOn, QuantumOn, StrongOn, 3BodyOff, Square, T0ApproxOff
47   void SetCoulOn();
48   void SetCoulOff();
49
50   void SetQuantumOn();
51   void SetQuantumOff();
52   void SetStrongOn();
53   void SetStrongOff();
54   void Set3BodyOn();
55   void Set3BodyOff();
56   void SetSphere(); // use Spherical wave approximation
57   void SetSquare(); // use use Square potential (only for p-p and pi+Pi-) otherwise, use spherical wave approx
58   void SetT0ApproxOff();//only with  Spherical wave Approximation - this is default mode
59   void SetT0ApproxOn(); 
60  
61 // Test Lambda parameters
62   void PrintLambdas();
63   
64   void SetNuclCharge(const double aNuclCharge); // for 3-body calculation
65   void SetNuclMass(const double aNuclMass);
66
67   virtual AliFemtoString Report();
68
69 protected:
70   // Fsi weight output
71   double  fWei;  // normal weight
72   double  fWein; // weight with nuclear influence
73   double  fWeif; // weight
74   double  fWeightDen; // weight for the denominator
75
76   // Setting parameters
77   int fItest;    // if set to 1 default parameters will be used
78
79   //int mNs;
80   int    fIch;        // switch coulomb interaction on/off
81   int    fIqs;        // switch quantum statistics on/off
82   int    fIsi;        // switch strong interaction on/off
83   int    fI3c;        // switch 3rd body influence on/off
84   double fNuclMass;   // mass of the third body
85   double fNuclCharge; // charge of the third body
86
87   bool   fSphereApp;       // use spherical approximation
88   bool   fT0App;           // use square well approximation
89
90   //Pair identification
91   int       fLL;             // internal pair type code
92   short     fNuclChargeSign; // sign of the 3rd body charge
93   bool      fSwap;           // are particle in right order ? 
94   int const fLLMax;          // number of supported pairs
95   char**    fLLName;         // name of the system
96   int *     fNumProcessPair; // number of process pairs of each type
97   int       fNumbNonId;      // Number of unidentified pairs
98
99   // Interface to the fortran functions
100   void FsiInit();
101   void FsiSetLL();
102   void FsiNucl();
103   bool SetPid(const int aPid1,const int aPid2);
104
105 #ifdef __ROOT__
106   ClassDef(AliFemtoModelWeightGeneratorLednicky,1)
107 #endif
108 };
109
110 #endif