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