Merging correctly the changes with the previous code clean-up
[u/mrichter/AliRoot.git] / HBTAN / AliHBTLLWeights.h
CommitLineData
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
13class AliHBTPair;
14class 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