]>
Commit | Line | Data |
---|---|---|
4fdf4eb3 | 1 | /* $Id$ */ |
2 | ||
1a1e58ac | 3 | //_________________________________________________________________ |
4 | /////////////////////////////////////////////////////////////////////// | |
5 | // | |
6 | // class AliHBTLLWeights | |
7 | // | |
4fdf4eb3 | 8 | // This class introduces the weight's calculation |
9 | // according to the Lednicky's algorithm. | |
10 | // The detailed description of the algorithm can be found | |
11 | // in comments to fortran code: | |
12 | // fsiw.f, fsiini.f | |
1a1e58ac | 13 | // |
14 | // Source simulation: Particle position/distance randomization | |
15 | // This class has functionality of randomizing particle positions / pair distances | |
16 | // so obtained correlation function follows a given shape, | |
17 | // depending on a value of fRandomPosition member | |
18 | // By default this feature is switched off: fRandomPosition == AliHBTLLWeights::kNone | |
19 | // It can be: kGaussianQInv - so 1D Qinv correlation function has a Gaussian shape | |
20 | // (and also Qlong and Qside, but not Qout) | |
21 | // kGaussianOSL - so 3D Qout-Qside-Qlong correlation function has a Gaussian shape | |
22 | // | |
23 | // Ludmila Malinina, Piotr Krzysztof Skowronski | |
24 | // | |
25 | /////////////////////////////////////////////////////////////////////// | |
88cb7938 | 26 | |
7f92929e | 27 | #ifndef ALIHBTLLWEIGHTS_H |
28 | #define ALIHBTLLWEIGHTS_H | |
29 | ||
dd82cadc | 30 | #include "AliHBTWeights.h" |
7f92929e | 31 | |
32 | class AliHBTPair; | |
1a1e58ac | 33 | class AliVAODParticle; |
dd82cadc | 34 | class AliHBTLLWeights: public AliHBTWeights |
88cb7938 | 35 | { |
36 | public: | |
ae4a4473 | 37 | AliHBTLLWeights(); |
88cb7938 | 38 | virtual ~AliHBTLLWeights(){;} |
39 | static AliHBTLLWeights* Instance(); | |
ae4a4473 | 40 | |
dd82cadc | 41 | void Set(); |
88cb7938 | 42 | |
1a1e58ac | 43 | Double_t GetWeight(AliHBTPair* partpair); //get weight calculated by Lednicky's algorithm |
88cb7938 | 44 | |
45 | void Init(); //put the initial values in fortran commons fsiini, led_bldata | |
46 | void SetTest(Bool_t rtest = kTRUE);//Sets fTest member | |
4fdf4eb3 | 47 | |
88cb7938 | 48 | void SetColoumb(Bool_t col = kTRUE);//: (ICH in fortran code) Coulomb interaction between the two particles ON (OFF) |
49 | void SetQuantumStatistics(Bool_t qss = kTRUE);//IQS: quantum statistics for the two particles ON (OFF) //if non-identical particles automatically off | |
50 | void SetStrongInterSwitch(Bool_t sis = kTRUE);//ISI: strong interaction between the two particles ON (OFF) | |
51 | void SetColWithResidNuclSwitch(Bool_t crn = kTRUE);//I3C: Coulomb interaction with residual nucleus ON (OFF) | |
526c2bd5 | 52 | void SetLambda(Double_t la){fOneMinusLambda=1.-la;} //lambda=haoticity |
88cb7938 | 53 | void SetApproxModel(Int_t ap);//sets Model of Approximation (NS in Fortran code) |
88cb7938 | 54 | void SetParticlesTypes(Int_t pid1, Int_t pid2); //set AliRoot particles types |
55 | void SetNucleusCharge(Double_t ch); // not used now (see comments in fortran code) | |
56 | void SetNucleusMass(Double_t mass); // (see comments in fortran code) | |
526c2bd5 | 57 | |
1a1e58ac | 58 | enum ERandomizationWay {kNone = 0, kGaussianQInv, kGaussianOSL}; |
59 | ||
60 | void SetRandomPosition(ERandomizationWay rw = kNone); //Choose if, and if yes, how to randomize distance between particles | |
61 | void SetR1dw(Double_t R); //spherical source model radii | |
62 | ||
88cb7938 | 63 | protected: |
64 | ||
65 | Bool_t fTest; //flag indicating if parameters listed below are to be calculated automatically (0) | |
66 | //or | |
37e71815 | 67 | Bool_t fColoumbSwitch; //switches on/off Coulumb effect |
68 | Bool_t fQuantStatSwitch; //switches on/off Quantum Statistics effect | |
88cb7938 | 69 | Bool_t fStrongInterSwitch;//Switches strong interactions TRUE=ON |
70 | Bool_t fColWithResidNuclSwitch;//Switches couloumb interaction | |
71 | //with residual nucleus TRUE=ON | |
72 | Double_t fNuclMass; //mass of nucleus | |
73 | Double_t fNuclCharge; //charge of nucleus | |
74 | ||
1a1e58ac | 75 | ERandomizationWay fRandomPosition;//flag indicating if positions of particles shuold be randomized according to parameters below |
88cb7938 | 76 | Double_t fRadius; //radius used for randomizing particle vertex position |
526c2bd5 | 77 | |
78 | Double_t fOneMinusLambda; //1 - intercept parameter | |
7f92929e | 79 | |
88cb7938 | 80 | Int_t fApproximationModel; //approximation used to calculate Bethe-Salpeter amplitude see SetApproxModel for more comments |
81 | ||
37e71815 | 82 | Int_t fPID1; //Pdg Code of the first particle in the pair |
83 | Int_t fPID2; //Pdg Code of the second particle in the pair | |
88cb7938 | 84 | Double_t fSigma; //constants for spherical source model in cm |
85 | static const Double_t fgkWcons; //constant for fm->GeV conversion 1/0.1973 | |
86 | ||
87 | static AliHBTLLWeights *fgLLWeights;// pointer to wrapper of Fortran Lednicky code | |
88 | ||
89 | static Int_t GetPairCode(Int_t pid1,Int_t pid2); | |
90 | static Int_t GetPairCode(const AliHBTPair* partpair);//calculate automatically internal code | |
91 | ||
92 | private: | |
111e505b | 93 | AliHBTLLWeights(const AliHBTLLWeights &/*source*/); |
94 | AliHBTLLWeights & operator=(const AliHBTLLWeights& /*source*/); | |
95 | ||
1a1e58ac | 96 | Int_t SetMomentaInLCMS(AliVAODParticle* part1, AliVAODParticle* part2); |
97 | void RandomPairDistances(); | |
98 | ||
99 | ||
100 | void Rotate(Double_t x, Double_t y, Double_t sphi, Double_t cphi, Double_t& xr, Double_t& yr); | |
101 | void Boost (Double_t z, Double_t t, Double_t beta, Double_t gamma, Double_t& zt, Double_t& yt); | |
102 | ClassDef(AliHBTLLWeights,2) | |
7f92929e | 103 | }; |
104 | ||
105 | #endif |