4fdf4eb3 |
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 |
7f92929e |
8 | #ifndef ALIHBTLLWEIGHTS_H |
9 | #define ALIHBTLLWEIGHTS_H |
10 | |
11 | #include <TObject.h> |
7f92929e |
12 | |
13 | class AliHBTPair; |
14 | class AliHBTLLWeights: public TObject |
4fdf4eb3 |
15 | { |
16 | public: |
17 | virtual ~AliHBTLLWeights(){;} |
18 | AliHBTLLWeights(const AliHBTLLWeights &source) { |
19 | //Copy ctor needed by the coding conventions but not used |
20 | Fatal("AliHBTLLWeights","copy ctor not implemented"); |
21 | } |
22 | AliHBTLLWeights & operator=(const AliHBTLLWeights &source) { |
23 | //Assignment operator needed by the coding conventions but not used |
24 | Fatal("AliHBTLLWeights","assignment operator not implemented"); |
25 | return * this; |
26 | } |
27 | static AliHBTLLWeights* Instance(); |
28 | |
29 | void Init(); //put the initial values in fortran commons fsiini, led_bldata |
30 | Double_t GetWeight(const AliHBTPair* partpair); //get weight calculated by Lednicky's algorithm |
31 | |
32 | void SetTest(Bool_t rtest = kTRUE){ftest = rtest;} //if ftest=0: |
33 | //physical values of the following parameters are put automatically |
34 | // in FSIINI (their values are not required) |
35 | // ftest=1: any values of the following parameters are allowed, |
36 | //the following parameters are required: |
37 | |
38 | void SetColoumb(Bool_t col = kTRUE){ |
39 | //(ICH in fortran code) Coulomb interaction between |
40 | //the two particles ON (OFF) |
41 | fColoumbSwitch = col; |
42 | } |
43 | void SetQuantumStatistics(Bool_t qss = kTRUE){ |
44 | //IQS: quantum statistics for the two particles ON (OFF) |
45 | //if non-identical particles automatically off |
46 | fQuantStatSwitch = qss; |
47 | } |
48 | void SetStrongInterSwitch(Bool_t sis = kTRUE){ |
49 | //ISI: strong interaction between the two particles ON (OFF) |
50 | fStrongInterSwitch = sis; |
51 | } |
52 | void SetColWithResidNuclSwitch(Bool_t crn = kTRUE){ |
53 | //I3C: Coulomb interaction with residual nucleus ON (OFF) |
54 | fColWithResidNuclSwitch = crn; |
55 | } |
56 | void SetApproxModel(Int_t ap){ |
57 | //NS in Fortran code, |
58 | fApproximationModel=ap; |
59 | } |
60 | // NS=1 Square well potential, |
61 | // NS=3 not used |
62 | // NS=4 scattered wave approximated by the spherical wave, |
63 | // NS=2 same as NS=4 but the approx. of equal emission times in PRF |
64 | // not required (t=0 approx. used in all other cases). |
7f92929e |
65 | |
66 | |
4fdf4eb3 |
67 | void SetRandomPosition(Bool_t rp = kTRUE){ |
68 | //ON=kTRUE(OFF=kFALSE) |
69 | fRandomPosition = rp; |
70 | } |
71 | // ON -- calculation of the Gauss source radii if the generator |
72 | // don't allows the source generation (for example MeVSim) |
73 | //if ON the following parameters are requested: |
74 | void SetR1dw(Double_t R){fRadius=R;} //spherical source model radii |
75 | void SetLambdaw(Double_t la){flambda=la;} //lambda=haoticity |
76 | void SetParticlesTypes(Int_t pid1, Int_t pid2){ |
77 | //set AliRoot particles types |
78 | fPID1 = pid1; fPID2 = pid2; |
79 | } |
7f92929e |
80 | |
4fdf4eb3 |
81 | void SetNucleusCharge(Double_t ch){ |
82 | // not used now (see comments in fortran code) |
83 | fNuclCharge=ch; |
84 | } |
85 | void SetNucleusMass(Double_t mass){ |
86 | // (see comments in fortran code) |
87 | fNuclMass=mass; |
88 | } |
89 | |
90 | |
91 | protected: |
92 | |
93 | Bool_t ftest; // Switch for automatic setting of all parameters |
94 | Bool_t fColoumbSwitch; // Swith for Couloumb interaction in the pair |
95 | Bool_t fQuantStatSwitch; //Switch for quantum statistics |
96 | Bool_t fStrongInterSwitch;//Switches strong interactions TRUE=ON |
97 | Bool_t fColWithResidNuclSwitch;//Switches couloumb interaction |
98 | //with residual nucleus TRUE=ON |
99 | Double_t fNuclMass; //mass |
100 | Double_t fNuclCharge; //charge |
101 | |
102 | Bool_t fRandomPosition; // Radius of Gaussian source |
103 | Double_t fRadius; // Raduis of spheric source |
104 | Double_t flambda; // Chaoticity |
105 | |
106 | |
107 | // Double_t fWein; |
108 | |
109 | Int_t fApproximationModel; //approximation used to calculate |
110 | // Bethe-Salpeter amplitude |
111 | // ==1 Square well potential, |
112 | // ==3 not used |
113 | // ==4 scattered wave approximated by the spherical wave, |
114 | // ==2 same as NS=4 but the approx. of equal emission times in PRF |
115 | // not required (t=0 approx. used in all other cases). |
116 | // Note: if ==2,4, the B-S amplitude diverges at zero distance r* in |
117 | // the two-particle c.m.s.; user can specify a cutoff AA in |
118 | // SUBROUTINE FSIINI, for example: |
119 | // IF(NS.EQ.2.OR.NS.EQ.4)AA=5.D0 !! in 1/GeV --> AA=1. fm |
120 | |
121 | Int_t fPID1; // Type of the first particle |
122 | Int_t fPID2; // Type of the second particle |
123 | |
124 | static AliHBTLLWeights *fgLLWeights;// pointer to wrapper of Fortran Lednicky code |
125 | |
126 | |
127 | static Int_t GetPairCode(Int_t pid1,Int_t pid2); |
128 | static Int_t GetPairCode(const AliHBTPair* partpair);//calculate automatically internal FSIW |
129 | //---------------------------------------------------------------------- |
130 | // LL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
131 | // part. 1: n p n alfa pi+ pi0 pi+ n p pi+ pi+ pi+ pi- K+ K+ K+ K- |
132 | // part. 2: n p p alfa pi- pi0 pi+ d d K- K+ p p K- K+ p p |
133 | // NS=1 y/n: + + + + + - - - - - - - - - - - - |
134 | //---------------------------------------------------------------------- |
135 | // LL 18 19 20 21 22 23 24 25 26 27 28 |
136 | // part. 1: d d t t K0 K0 d p p p n |
137 | // part. 2: d alfa t alfa K0 K0b t t alfa lambda lambda |
138 | // NS=1 y/n: - - - - - - - - - + + |
139 | //---------------------------------------------------------------------- |
140 | |
141 | Double_t fsigma; //constants for spherical source model |
142 | Double_t fwcons; //weight of final state interaction? |
143 | |
144 | private: |
145 | AliHBTLLWeights(); |
146 | |
147 | ClassDef(AliHBTLLWeights,1) |
7f92929e |
148 | }; |
149 | |
150 | #endif |