]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenGeVSim.h
Corrections to obey the coding conventions
[u/mrichter/AliRoot.git] / EVGEN / AliGenGeVSim.h
1 #ifndef ALIGENGEVSIM_H
2 #define ALIGENGEVSIM_H
3
4 ////////////////////////////////////////////////////////////////////////////////
5 //
6 // AliGenGeVSim is a class implementing GeVSim event generator.
7 // 
8 // GeVSim is a simple Monte-Carlo event generator for testing detector and 
9 // algorythm performance especialy concerning flow and event-by-event studies
10 //
11 // In this event generator particles are generated from thermal distributions 
12 // without any dynamics and addicional constrains. Distribution parameters like
13 // multiplicity, particle type yields, inverse slope parameters, flow coeficients 
14 // and expansion velocities are expleicite defined by the user.
15 //
16 // GeVSim contains four thermal distributions the same as
17 // MevSim event generator developed for STAR experiment.
18 //
19 // In addition custom distributions can be used be the mean 
20 // either two dimensional formula (TF2), a two dimensional histogram or
21 // two one dimensional histograms.
22 //  
23 // Azimuthal distribution is deconvoluted from (Pt,Y) distribution
24 // and is described by two Fourier coefficients representing 
25 // Directed and Elliptic flow. 
26 // 
27 ////////////////////////////////////////////////////////////////////////////////
28 //
29 // To apply flow to event ganerated by an arbitraly event generator
30 // refer to AliGenAfterBurnerFlow class.
31 //
32 ////////////////////////////////////////////////////////////////////////////////
33 //
34 // For examples, parameters and testing macros refer to:
35 // http:/home.cern.ch/radomski
36 // 
37 // for more detailed description refer to ALICE NOTE
38 // "GeVSim Monte-Carlo Event Generator"
39 // S.Radosmki, P. Foka.
40 //  
41 // Author:
42 // Sylwester Radomski,
43 // GSI, March 2002
44 //  
45 // S.Radomski@gsi.de
46 //
47 ////////////////////////////////////////////////////////////////////////////////
48 //
49 // Updated and revised: September 2002, S. Radomski, GSI
50 //
51 ////////////////////////////////////////////////////////////////////////////////
52
53
54 class TFormula;
55 class TF1;
56 class TF2;
57 class TH1D;
58 class TH2D;
59 class TObjArray;
60 class AliGeVSimParticle;
61
62 #include "AliGenerator.h"
63
64
65 class AliGenGeVSim : public AliGenerator {
66
67  public:
68   
69   AliGenGeVSim();
70   AliGenGeVSim(Float_t psi, Bool_t isMultTotal = kTRUE);
71   
72   virtual ~AliGenGeVSim();
73   
74   /////////////////////////////////////////////////////////////////
75   
76   void AddParticleType(AliGeVSimParticle *part);
77   void SetMultTotal(Bool_t isTotal = kTRUE);
78   
79   void Init();
80   void Generate();
81   
82   /////////////////////////////////////////////////////////////////
83   
84  private:
85   
86   Int_t   fModel;            // Selected model (1-7)
87   Float_t fPsi;              // Reaction Plane angle (0-2pi)
88   Bool_t  fIsMultTotal;      // Mode od multiplicity: total, dN/dY
89
90   TF1 *fPtFormula;           //! Pt formula for model (1)
91   TF1 *fYFormula;            //! Y formula for model (1)
92   TF2 *fPtYFormula[4];       //! Pt,Y formulae for model (2)-(4)
93   TF1 *fPhiFormula;          //! phi formula 
94   
95   TFormula *fCurrentForm;    //! currently used formula
96   TH1D *fHist[2];            //! two 1D histograms (fModel == 6)
97   TH2D *fPtYHist;            //! two-dimensional histogram (fModel == 7)
98
99   TObjArray *fPartTypes;     // Registered particles
100   
101   void InitFormula();
102   void SetFormula(Int_t pdg);
103   void AdjustFormula();
104   void DetermineReactionPlane();
105   void GetRandomPtY(Double_t &pt, Double_t &y);
106
107   Float_t GetdNdYToTotal();
108   
109   Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi);  // for histograms only
110   Bool_t CheckAcceptance(Float_t p[3]);
111   
112   Float_t FindScaler(Int_t paramId, Int_t pdg);
113   
114   /////////////////////////////////////////////////////////////////
115
116  public:
117
118   ClassDef(AliGenGeVSim, 2)
119
120 };
121
122 #endif