New version of AliGeVSim code. New class for flow afterburner (S.Radomski)
[u/mrichter/AliRoot.git] / EVGEN / AliGenGeVSim.h
1 #ifndef ALIGENGEVSIM_H
2 #define ALIGENGEVSIM_H
3
4 ////////////////////////////////////////////////////////////////////////////////
5 //
6 // AliGenGeVSim is a class implementing simple Monte-Carlo event generator for 
7 // testing algorythms and detector performance.
8 //
9 // In this event generator particles are generated from thermal distributions 
10 // without any dynamics and addicional constrains. Distribution parameters like
11 // multiplicity, particle type yields, inverse slope parameters, flow coeficients 
12 // and expansion velocities are expleicite defined by the user.
13 //
14 // GeVSim contains four thermal distributions the same as
15 // MevSim event generator developed for STAR experiment.
16 //
17 // In addition custom distributions can be used be the mean of TF2 function
18 // named "gevsimPtY". 
19 //  
20 // Azimuthal distribution is deconvoluted from (Pt,Y) distribution
21 // and is described by two Fourier coefficients representing 
22 // Directed and Elliptical flow. 
23 // 
24 // To apply flow to event ganerated by an arbitraly event generator
25 // refer to AliGenAfterBurnerFlow class.
26 // For examples, parameters and testing macros refer to:
27 // http:/home.cern.ch/radomski
28 //  
29 // Author:
30 // Sylwester Radomski,
31 // GSI, March 2002
32 //  
33 // S.Radomski@gsi.de
34 //
35 ////////////////////////////////////////////////////////////////////////////////
36
37 class TFormula;
38 class TF1;
39 class TF2;
40 class TObjArray;
41 class AliGeVSimParticle;
42
43
44 class AliGenGeVSim : public AliGenerator {
45
46  public:
47   
48   AliGenGeVSim();
49   AliGenGeVSim(Int_t model, Float_t psi);
50   
51   virtual ~AliGenGeVSim();
52   
53   /////////////////////////////////////////////////////////////////
54   
55   void AddParticleType(AliGeVSimParticle *part);
56   
57   void Init();
58   void Generate();
59   
60   /////////////////////////////////////////////////////////////////
61   
62  private:
63   
64   Int_t   fModel;            // Selected model (1-5)
65   Float_t fPsi;              // Reaction Plane angle (0-2pi)
66   
67   TF1 *fPtFormula;           // Pt formula for model (1)
68   TF1 *fYFormula;            // Y formula for model (1)
69   TF2 *fPtYFormula[4];       // Pt,Y formulae for model (2)-(4) and custom
70   TF1 *fPhiFormula;          // phi formula 
71   
72   TObjArray *fPartTypes;     // Registered particles
73   
74   void InitFormula();        
75   void DetermineReactionPlane();
76  
77   TFormula* DetermineModel();
78  
79   //void PlotDistributions();
80   
81   Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi);
82   Bool_t CheckP(Float_t p[3]);
83   
84   Float_t FindScaler(Int_t paramId, Int_t pdg);
85   
86   /////////////////////////////////////////////////////////////////
87
88  public:
89
90   ClassDef(AliGenGeVSim, 1)
91
92 };
93
94 #endif