reverting to prev.
[u/mrichter/AliRoot.git] / HBTAN / AliHBTLLWeights.h
1 /* $Id$ */
2
3 // This class introduces the weight's calculation 
4 // according to the Lednicky's algorithm.
5 // The detailed description of the algorithm can be found 
6 // in comments to fortran code:
7 // fsiw.f, fsiini.f  
8
9 #ifndef ALIHBTLLWEIGHTS_H
10 #define ALIHBTLLWEIGHTS_H
11
12 #include "AliHBTWeights.h"
13
14 class AliHBTPair;
15 class AliHBTLLWeights: public AliHBTWeights
16  {
17    public:
18      AliHBTLLWeights();
19      virtual ~AliHBTLLWeights(){;}
20      static AliHBTLLWeights* Instance();
21      
22      void Set();
23      
24      Double_t GetWeight(const AliHBTPair* partpair); //get weight calculated by Lednicky's algorithm
25
26      void Init(); //put the initial values in fortran commons fsiini, led_bldata
27      void SetTest(Bool_t rtest = kTRUE);//Sets fTest member
28
29      void SetColoumb(Bool_t col = kTRUE);//: (ICH in fortran code) Coulomb interaction between the two particles ON (OFF)
30      void SetQuantumStatistics(Bool_t qss = kTRUE);//IQS: quantum statistics for the two particles ON (OFF) //if non-identical particles automatically off
31      void SetStrongInterSwitch(Bool_t sis = kTRUE);//ISI: strong interaction between the two particles ON (OFF)
32      void SetColWithResidNuclSwitch(Bool_t crn = kTRUE);//I3C: Coulomb interaction with residual nucleus ON (OFF)  
33      void SetLambda(Double_t la){fOneMinusLambda=1.-la;}  //lambda=haoticity
34      void SetApproxModel(Int_t ap);//sets  Model of Approximation (NS in Fortran code)
35      void SetRandomPosition(Bool_t rp = kTRUE); //ON=kTRUE(OFF=kFALSE)
36      void SetR1dw(Double_t R);   //spherical source model radii                                                                                                                                                                                                 
37      void SetParticlesTypes(Int_t pid1, Int_t pid2); //set AliRoot particles types   
38      void SetNucleusCharge(Double_t ch); // not used now  (see comments in fortran code)
39      void SetNucleusMass(Double_t mass); // (see comments in fortran code)
40      
41    protected:
42      
43      Bool_t fTest;           //flag indicating if parameters listed below are to be calculated automatically (0)
44                              //or 
45      Bool_t fColoumbSwitch;   //switches on/off Coulumb effect
46      Bool_t fQuantStatSwitch; //switches on/off Quantum Statistics effect
47      Bool_t fStrongInterSwitch;//Switches strong interactions TRUE=ON
48      Bool_t fColWithResidNuclSwitch;//Switches couloumb interaction 
49                                     //with residual nucleus TRUE=ON          
50      Double_t fNuclMass;   //mass of nucleus
51      Double_t fNuclCharge; //charge of nucleus
52      
53      Bool_t   fRandomPosition;//flag indicating if positions of particles shuold be randomized according to parameters below
54      Double_t fRadius;        //radius used for randomizing particle vertex position
55      
56      Double_t fOneMinusLambda; //1 - intercept parameter
57      
58      Int_t fApproximationModel; //approximation used to calculate Bethe-Salpeter amplitude see SetApproxModel for more comments
59
60      Int_t fPID1;  //Pdg Code of the first particle in the pair
61      Int_t fPID2;  //Pdg Code of the second particle in the pair
62      Double_t fSigma; //constants for spherical source model in cm
63      static const Double_t fgkWcons; //constant for fm->GeV conversion 1/0.1973
64
65      static  AliHBTLLWeights *fgLLWeights;// pointer to wrapper of Fortran Lednicky code
66
67      static Int_t GetPairCode(Int_t pid1,Int_t pid2);
68      static Int_t GetPairCode(const AliHBTPair* partpair);//calculate automatically internal code 
69
70    private:
71      AliHBTLLWeights(const AliHBTLLWeights &/*source*/);
72      AliHBTLLWeights & operator=(const AliHBTLLWeights& /*source*/);
73      
74      ClassDef(AliHBTLLWeights,1)
75  };
76
77 #endif