ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFemtoModelWeightGeneratorLednicky : the most advanced weight       //
// generator available. Supports a large number of different pair types  //
// and interaction types. Can calculate pair weights coming from         //
// quantum statistics, coulomb interation and strong interaction ot any  //
// combination of the three, as applicable.                              //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOMODELWEIGHTGENERATORLEDNICKY_H
#define ALIFEMTOMODELWEIGHTGENERATORLEDNICKY_H

#include "AliFemtoTypes.h"
#include "AliFemtoModelWeightGenerator.h"

class AliFemtoModelWeightGeneratorLednicky : public  AliFemtoModelWeightGenerator {
 public: 
// --- Constructor
  AliFemtoModelWeightGeneratorLednicky(); // call SetDefaultCalcPar
  AliFemtoModelWeightGeneratorLednicky(const AliFemtoModelWeightGeneratorLednicky &aWeight); // call SetDefaultCalcPar
// --- Destructor : nothing to explicitly delete
  AliFemtoModelWeightGeneratorLednicky& operator=(const AliFemtoModelWeightGeneratorLednicky& aWeight);
  ~AliFemtoModelWeightGeneratorLednicky();

  virtual Double_t GenerateWeight(AliFemtoPair *aPair);

  virtual void     SetPairType(Int_t aPairType);
  virtual void     SetPairTypeFromPair(AliFemtoPair *aPair);
  virtual Int_t    GetPairType() const;

  virtual Double_t GetKStar() const;
  virtual Double_t GetKStarOut() const;
  virtual Double_t GetKStarSide() const;
  virtual Double_t GetKStarLong() const;
  virtual Double_t GetRStar() const;
  virtual Double_t GetRStarOut() const;
  virtual Double_t GetRStarSide() const;
  virtual Double_t GetRStarLong() const;

  virtual AliFemtoModelWeightGenerator* Clone() const;

// --- Setting

// >>> Calculation mode
  void SetDefaultCalcPar(); // Default is CoulOn, QuantumOn, StrongOn, 3BodyOff, Square, T0ApproxOff
  void SetCoulOn();
  void SetCoulOff();

  void SetQuantumOn();
  void SetQuantumOff();
  void SetStrongOn();
  void SetStrongOff();
  void Set3BodyOn();
  void Set3BodyOff();
  void SetSphere(); // use Spherical wave approximation
  void SetSquare(); // use use Square potential (only for p-p and pi+Pi-) otherwise, use spherical wave approx
  void SetT0ApproxOff();//only with  Spherical wave Approximation - this is default mode
  void SetT0ApproxOn(); 
 
// Test Lambda parameters
  void PrintLambdas(){;}
  
  void SetNuclCharge(const double aNuclCharge); // for 3-body calculation
  void SetNuclMass(const double aNuclMass);

  virtual AliFemtoString Report();

protected:
  // Fsi weight output
  double  fWei;  // normal weight
  double  fWein; // weight with nuclear influence
  double  fWeif; // weight
  double  fWeightDen; // weight for the denominator

  // Setting parameters
  int fItest;    // if set to 1 default parameters will be used

  //int mNs;
  int    fIch;        // switch coulomb interaction on/off
  int    fIqs;        // switch quantum statistics on/off
  int    fIsi;        // switch strong interaction on/off
  int    fI3c;        // switch 3rd body influence on/off
  double fNuclMass;   // mass of the third body
  double fNuclCharge; // charge of the third body

  bool   fSphereApp;       // use spherical approximation
  bool   fT0App;           // use square well approximation

  //Pair identification
  int       fLL;             // internal pair type code
  short     fNuclChargeSign; // sign of the 3rd body charge
  bool      fSwap;           // are particle in right order ? 
  int const fLLMax;          // number of supported pairs
  char**    fLLName;         // name of the system
  int *     fNumProcessPair; // number of process pairs of each type
  int       fNumbNonId;      // Number of unidentified pairs

  // Interface to the fortran functions
  void FsiInit();
  void FsiSetLL();
  void FsiNucl();
  bool SetPid(const int aPid1,const int aPid2);

#ifdef __ROOT__
  ClassDef(AliFemtoModelWeightGeneratorLednicky,1)
#endif
};

#endif
 AliFemtoModelWeightGeneratorLednicky.h:1
 AliFemtoModelWeightGeneratorLednicky.h:2
 AliFemtoModelWeightGeneratorLednicky.h:3
 AliFemtoModelWeightGeneratorLednicky.h:4
 AliFemtoModelWeightGeneratorLednicky.h:5
 AliFemtoModelWeightGeneratorLednicky.h:6
 AliFemtoModelWeightGeneratorLednicky.h:7
 AliFemtoModelWeightGeneratorLednicky.h:8
 AliFemtoModelWeightGeneratorLednicky.h:9
 AliFemtoModelWeightGeneratorLednicky.h:10
 AliFemtoModelWeightGeneratorLednicky.h:11
 AliFemtoModelWeightGeneratorLednicky.h:12
 AliFemtoModelWeightGeneratorLednicky.h:13
 AliFemtoModelWeightGeneratorLednicky.h:14
 AliFemtoModelWeightGeneratorLednicky.h:15
 AliFemtoModelWeightGeneratorLednicky.h:16
 AliFemtoModelWeightGeneratorLednicky.h:17
 AliFemtoModelWeightGeneratorLednicky.h:18
 AliFemtoModelWeightGeneratorLednicky.h:19
 AliFemtoModelWeightGeneratorLednicky.h:20
 AliFemtoModelWeightGeneratorLednicky.h:21
 AliFemtoModelWeightGeneratorLednicky.h:22
 AliFemtoModelWeightGeneratorLednicky.h:23
 AliFemtoModelWeightGeneratorLednicky.h:24
 AliFemtoModelWeightGeneratorLednicky.h:25
 AliFemtoModelWeightGeneratorLednicky.h:26
 AliFemtoModelWeightGeneratorLednicky.h:27
 AliFemtoModelWeightGeneratorLednicky.h:28
 AliFemtoModelWeightGeneratorLednicky.h:29
 AliFemtoModelWeightGeneratorLednicky.h:30
 AliFemtoModelWeightGeneratorLednicky.h:31
 AliFemtoModelWeightGeneratorLednicky.h:32
 AliFemtoModelWeightGeneratorLednicky.h:33
 AliFemtoModelWeightGeneratorLednicky.h:34
 AliFemtoModelWeightGeneratorLednicky.h:35
 AliFemtoModelWeightGeneratorLednicky.h:36
 AliFemtoModelWeightGeneratorLednicky.h:37
 AliFemtoModelWeightGeneratorLednicky.h:38
 AliFemtoModelWeightGeneratorLednicky.h:39
 AliFemtoModelWeightGeneratorLednicky.h:40
 AliFemtoModelWeightGeneratorLednicky.h:41
 AliFemtoModelWeightGeneratorLednicky.h:42
 AliFemtoModelWeightGeneratorLednicky.h:43
 AliFemtoModelWeightGeneratorLednicky.h:44
 AliFemtoModelWeightGeneratorLednicky.h:45
 AliFemtoModelWeightGeneratorLednicky.h:46
 AliFemtoModelWeightGeneratorLednicky.h:47
 AliFemtoModelWeightGeneratorLednicky.h:48
 AliFemtoModelWeightGeneratorLednicky.h:49
 AliFemtoModelWeightGeneratorLednicky.h:50
 AliFemtoModelWeightGeneratorLednicky.h:51
 AliFemtoModelWeightGeneratorLednicky.h:52
 AliFemtoModelWeightGeneratorLednicky.h:53
 AliFemtoModelWeightGeneratorLednicky.h:54
 AliFemtoModelWeightGeneratorLednicky.h:55
 AliFemtoModelWeightGeneratorLednicky.h:56
 AliFemtoModelWeightGeneratorLednicky.h:57
 AliFemtoModelWeightGeneratorLednicky.h:58
 AliFemtoModelWeightGeneratorLednicky.h:59
 AliFemtoModelWeightGeneratorLednicky.h:60
 AliFemtoModelWeightGeneratorLednicky.h:61
 AliFemtoModelWeightGeneratorLednicky.h:62
 AliFemtoModelWeightGeneratorLednicky.h:63
 AliFemtoModelWeightGeneratorLednicky.h:64
 AliFemtoModelWeightGeneratorLednicky.h:65
 AliFemtoModelWeightGeneratorLednicky.h:66
 AliFemtoModelWeightGeneratorLednicky.h:67
 AliFemtoModelWeightGeneratorLednicky.h:68
 AliFemtoModelWeightGeneratorLednicky.h:69
 AliFemtoModelWeightGeneratorLednicky.h:70
 AliFemtoModelWeightGeneratorLednicky.h:71
 AliFemtoModelWeightGeneratorLednicky.h:72
 AliFemtoModelWeightGeneratorLednicky.h:73
 AliFemtoModelWeightGeneratorLednicky.h:74
 AliFemtoModelWeightGeneratorLednicky.h:75
 AliFemtoModelWeightGeneratorLednicky.h:76
 AliFemtoModelWeightGeneratorLednicky.h:77
 AliFemtoModelWeightGeneratorLednicky.h:78
 AliFemtoModelWeightGeneratorLednicky.h:79
 AliFemtoModelWeightGeneratorLednicky.h:80
 AliFemtoModelWeightGeneratorLednicky.h:81
 AliFemtoModelWeightGeneratorLednicky.h:82
 AliFemtoModelWeightGeneratorLednicky.h:83
 AliFemtoModelWeightGeneratorLednicky.h:84
 AliFemtoModelWeightGeneratorLednicky.h:85
 AliFemtoModelWeightGeneratorLednicky.h:86
 AliFemtoModelWeightGeneratorLednicky.h:87
 AliFemtoModelWeightGeneratorLednicky.h:88
 AliFemtoModelWeightGeneratorLednicky.h:89
 AliFemtoModelWeightGeneratorLednicky.h:90
 AliFemtoModelWeightGeneratorLednicky.h:91
 AliFemtoModelWeightGeneratorLednicky.h:92
 AliFemtoModelWeightGeneratorLednicky.h:93
 AliFemtoModelWeightGeneratorLednicky.h:94
 AliFemtoModelWeightGeneratorLednicky.h:95
 AliFemtoModelWeightGeneratorLednicky.h:96
 AliFemtoModelWeightGeneratorLednicky.h:97
 AliFemtoModelWeightGeneratorLednicky.h:98
 AliFemtoModelWeightGeneratorLednicky.h:99
 AliFemtoModelWeightGeneratorLednicky.h:100
 AliFemtoModelWeightGeneratorLednicky.h:101
 AliFemtoModelWeightGeneratorLednicky.h:102
 AliFemtoModelWeightGeneratorLednicky.h:103
 AliFemtoModelWeightGeneratorLednicky.h:104
 AliFemtoModelWeightGeneratorLednicky.h:105
 AliFemtoModelWeightGeneratorLednicky.h:106
 AliFemtoModelWeightGeneratorLednicky.h:107
 AliFemtoModelWeightGeneratorLednicky.h:108
 AliFemtoModelWeightGeneratorLednicky.h:109
 AliFemtoModelWeightGeneratorLednicky.h:110