Retrofeed from the Release developement
[u/mrichter/AliRoot.git] / HBTAN / AliHBTCrab.h
1 /* $Id$ */
2
3 //__________________________________________________________________________
4 ////////////////////////////////////////////////////////////////////////////
5 //
6 // class AliHBTCrab
7 //
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
13 //
14 // Piotr.Skowronski@cern.ch
15 ////////////////////////////////////////////////////////////////////////////
16
17 #ifndef ALIHBTCrab_H
18 #define ALIHBTCrab_H
19
20 #include "AliHBTWeights.h"
21
22 #ifdef __DECCXX
23  #include <complex.h>
24 #else
25  class Complex;
26  typedef Complex doublecomplex;
27 #endif
28  
29 //#include <math.h>
30  
31 class AliHBTPair;
32
33 class AliHBTCrab: public AliHBTWeights
34  {
35    public:
36
37      AliHBTCrab();
38      virtual ~AliHBTCrab(){fgCrab =0x0;}
39      static AliHBTCrab* Instance();
40      void Set();
41
42      Double_t GetWeight(AliHBTPair* partpair);
43      void Init(Int_t pid1,Int_t pid2); //put the initial values in fortran commons fsiini, led_bldata
44      
45    private:
46      AliHBTCrab(const AliHBTCrab &/*source*/);
47      AliHBTCrab & operator=(const AliHBTCrab& /*source*/);
48
49      void GetComQuantities(const AliHBTPair* pair, double *qred,double *r,double *qdotr,double *mom, int *test);
50      double  CorrCalc(double trueqred,double trueqdotr,double truer);
51      
52      Bool_t fBreitWigner;//switch if to calculated BW
53      Bool_t fReducedMom;//switch if
54      Float_t fMaxMomentum;//switch if
55      
56      Bool_t  SetConfig(const AliHBTPair* pair);
57      
58      Int_t fPid1;//PID of the first particle
59      Int_t fPid2;//PID of the second particle
60      
61      Double_t fMass1;//mass of the first particle
62      Double_t fMass2;//mass of the second particle
63  
64      Float_t fInteractionWsym;// fractions of symmetric and antisym weights of the various spin channels 
65      Float_t fInteractionWanti;//comment
66      Float_t fInteractionWnosym;//comment
67      
68      Float_t fInteractionDelk;//comment
69      Int_t fInteractionNkmax;// number of momentum points in mesh for strong/coul. interaction 
70      
71 #ifdef __DECCXX
72      static const complex fgkCI;//complex (1,0)
73 #else
74      static const doublecomplex fgkCI;//complex (1,0)
75 #endif
76      static const Double_t fgkROOT2;//! some const
77      static const Double_t fgkWcons; //constant for fm->GeV conversion 1/0.1973
78      
79 #ifdef __DECCXX
80      complex CGamma(complex c);
81 #else
82      doublecomplex CGamma(doublecomplex c);
83 #endif
84      
85      static AliHBTCrab* fgCrab; //pointer to instance of this class - singleton
86      ClassDef(AliHBTCrab,1)
87  };
88  
89 #endif