]>
Commit | Line | Data |
---|---|---|
1 | //This class introduce the weights calculation according with Lednicky's algorithm. | |
2 | //The detailed description of the algorithm can be found in comments to fortran code: | |
3 | //fsiw.f, fsiini.f | |
4 | #ifndef ALIHBTLLWEIGHTS_H | |
5 | #define ALIHBTLLWEIGHTS_H | |
6 | ||
7 | #include <TObject.h> | |
8 | #include "WLedCOMMONS.h" | |
9 | ||
10 | class AliHBTPair; | |
11 | class AliHBTLLWeights: public TObject | |
12 | { | |
13 | public: | |
14 | virtual ~AliHBTLLWeights(){;} | |
15 | static AliHBTLLWeights* Instance(); | |
16 | ||
17 | void Init(); //put the initial values in fortran commons fsiini, led_bldata | |
18 | Double_t GetWeight(const AliHBTPair* partpair); //get weight calculated by Lednicky's algorithm | |
19 | ||
20 | void SetTest(Bool_t rtest = kTRUE){ftest = rtest;} //if ftest=0: | |
21 | //physical values of the following parameters are put automatically | |
22 | // in FSIINI (their values are not required) | |
23 | // ftest=1: any values of the following parameters are allowed, | |
24 | //the following parameters are required: | |
25 | ||
26 | void SetColoumb(Bool_t col = kTRUE){fColoumbSwitch = col;}//: (ICH in fortran code) Coulomb interaction between the two particles ON (OFF) | |
27 | void SetQuantumStatistics(Bool_t qss = kTRUE){fQuantStatSwitch = qss;}//IQS: quantum statistics for the two particles ON (OFF) //if non-identical particles automatically off | |
28 | void SetStrongInterSwitch(Bool_t sis = kTRUE){fStrongInterSwitch = sis;}//ISI: strong interaction between the two particles ON (OFF) | |
29 | void SetColWithResidNuclSwitch(Bool_t crn = kTRUE){fColWithResidNuclSwitch = crn;}//I3C: Coulomb interaction with residual nucleus ON (OFF) | |
30 | void SetApproxModel(Int_t ap){approximationModel=ap;}//NS in Fortran code, | |
31 | // NS=1 Square well potential, | |
32 | // NS=3 not used | |
33 | // NS=4 scattered wave approximated by the spherical wave, | |
34 | // NS=2 same as NS=4 but the approx. of equal emission times in PRF | |
35 | // not required (t=0 approx. used in all other cases). | |
36 | ||
37 | ||
38 | void SetRandomPosition(Bool_t rp = kTRUE){fRandomPosition = rp;} //ON=kTRUE(OFF=kFALSE) | |
39 | // ON -- calculation of the Gauss source radii if the generator don't allows the source generation (for example MeVSim) | |
40 | //if ON the following parameters are requested: | |
41 | void SetR1dw(Double_t R){fRadius=R;} //spherical source model radii | |
42 | void SetLambdaw(Double_t la){flambda=la;} //lambda=haoticity | |
43 | ||
44 | ||
45 | void SetParticlesTypes(Int_t pid1, Int_t pid2){fPID1 = pid1; fPID2 = pid2;} //set AliRoot particles types | |
46 | ||
47 | void SetNucleusCharge(Double_t ch){fNuclCharge=ch;} // not used now (see comments in fortran code) | |
48 | void SetNucleusMass(Double_t mass){fNuclMass=mass;} // (see comments in fortran code) | |
49 | ||
50 | ||
51 | protected: | |
52 | ||
53 | Bool_t ftest; | |
54 | Bool_t fColoumbSwitch; | |
55 | Bool_t fQuantStatSwitch; | |
56 | Bool_t fStrongInterSwitch;//Switches strong interactions TRUE=ON | |
57 | Bool_t fColWithResidNuclSwitch;//Switches couloumb interaction | |
58 | //with residual nucleus TRUE=ON | |
59 | Double_t fNuclMass; //mass | |
60 | Double_t fNuclCharge; //charge | |
61 | ||
62 | Bool_t fRandomPosition; | |
63 | Double_t fRadius; | |
64 | Double_t flambda; | |
65 | ||
66 | ||
67 | Double_t wein; | |
68 | ||
69 | Int_t approximationModel; //approximation used to calculate Bethe-Salpeter amplitude | |
70 | // ==1 Square well potential, | |
71 | // ==3 not used | |
72 | // ==4 scattered wave approximated by the spherical wave, | |
73 | // ==2 same as NS=4 but the approx. of equal emission times in PRF | |
74 | // not required (t=0 approx. used in all other cases). | |
75 | // Note: if ==2,4, the B-S amplitude diverges at zero distance r* in | |
76 | // the two-particle c.m.s.; user can specify a cutoff AA in | |
77 | // SUBROUTINE FSIINI, for example: | |
78 | // IF(NS.EQ.2.OR.NS.EQ.4)AA=5.D0 !! in 1/GeV --> AA=1. fm | |
79 | ||
80 | Int_t fPID1; | |
81 | Int_t fPID2; | |
82 | ||
83 | static AliHBTLLWeights *fgLLWeights;// pointer to wrapper of Fortran Lednicky code | |
84 | ||
85 | ||
86 | static Int_t GetPairCode(Int_t pid1,Int_t pid2); | |
87 | static Int_t GetPairCode(const AliHBTPair* partpair);//calculate automatically internal FSIW | |
88 | // C---------------------------------------------------------------------- | |
89 | // C- LL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
90 | // C- part. 1: n p n alfa pi+ pi0 pi+ n p pi+ pi+ pi+ pi- K+ K+ K+ K- | |
91 | // C- part. 2: n p p alfa pi- pi0 pi+ d d K- K+ p p K- K+ p p | |
92 | // C NS=1 y/n: + + + + + - - - - - - - - - - - - | |
93 | // C---------------------------------------------------------------------- | |
94 | // C- LL 18 19 20 21 22 23 24 25 26 27 28 | |
95 | // C- part. 1: d d t t K0 K0 d p p p n | |
96 | // C- part. 2: d alfa t alfa K0 K0b t t alfa lambda lambda | |
97 | // C NS=1 y/n: - - - - - - - - - + + | |
98 | // C---------------------------------------------------------------------- | |
99 | ||
100 | ||
101 | Double_t fsigma; //constants for spherical source model | |
102 | Double_t fwcons; // | |
103 | ||
104 | private: | |
105 | AliHBTLLWeights(); | |
106 | ||
107 | public: | |
108 | ClassDef(AliHBTLLWeights,1) | |
109 | }; | |
110 | ||
111 | #endif |