Removing dependences on AliDAQ class (in raw)
[u/mrichter/AliRoot.git] / HBTAN / AliHBTLLWeights.h
CommitLineData
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
32class AliHBTPair;
1a1e58ac 33class AliVAODParticle;
dd82cadc 34class 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