]>
Commit | Line | Data |
---|---|---|
7816887f | 1 | #ifndef ALIGENGEVSIM_H |
2 | #define ALIGENGEVSIM_H | |
0af12c00 | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7816887f | 7 | |
4966b266 | 8 | //////////////////////////////////////////////////////////////////////////////// |
9 | // | |
7e4131fc | 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 | |
4966b266 | 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 | // | |
7e4131fc | 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. | |
4966b266 | 26 | // |
27 | // Azimuthal distribution is deconvoluted from (Pt,Y) distribution | |
28 | // and is described by two Fourier coefficients representing | |
7e4131fc | 29 | // Directed and Elliptic flow. |
4966b266 | 30 | // |
7e4131fc | 31 | //////////////////////////////////////////////////////////////////////////////// |
32 | // | |
4966b266 | 33 | // To apply flow to event ganerated by an arbitraly event generator |
34 | // refer to AliGenAfterBurnerFlow class. | |
7e4131fc | 35 | // |
36 | //////////////////////////////////////////////////////////////////////////////// | |
37 | // | |
4966b266 | 38 | // For examples, parameters and testing macros refer to: |
39 | // http:/home.cern.ch/radomski | |
7e4131fc | 40 | // |
41 | // for more detailed description refer to ALICE NOTE | |
42 | // "GeVSim Monte-Carlo Event Generator" | |
43 | // S.Radosmki, P. Foka. | |
4966b266 | 44 | // |
45 | // Author: | |
46 | // Sylwester Radomski, | |
47 | // GSI, March 2002 | |
48 | // | |
49 | // S.Radomski@gsi.de | |
50 | // | |
51 | //////////////////////////////////////////////////////////////////////////////// | |
7e4131fc | 52 | // |
53 | // Updated and revised: September 2002, S. Radomski, GSI | |
54 | // | |
55 | //////////////////////////////////////////////////////////////////////////////// | |
56 | ||
4966b266 | 57 | |
58 | class TFormula; | |
59 | class TF1; | |
60 | class TF2; | |
7e4131fc | 61 | class TH1D; |
62 | class TH2D; | |
4966b266 | 63 | class TObjArray; |
64 | class AliGeVSimParticle; | |
7816887f | 65 | |
116cbefd | 66 | #include "AliGenerator.h" |
67 | ||
7816887f | 68 | |
69 | class AliGenGeVSim : public AliGenerator { | |
70 | ||
4966b266 | 71 | public: |
72 | ||
73 | AliGenGeVSim(); | |
7e4131fc | 74 | AliGenGeVSim(Float_t psi, Bool_t isMultTotal = kTRUE); |
4966b266 | 75 | |
76 | virtual ~AliGenGeVSim(); | |
77 | ||
78 | ///////////////////////////////////////////////////////////////// | |
79 | ||
80 | void AddParticleType(AliGeVSimParticle *part); | |
7e4131fc | 81 | void SetMultTotal(Bool_t isTotal = kTRUE); |
4966b266 | 82 | |
83 | void Init(); | |
84 | void Generate(); | |
85 | ||
86 | ///////////////////////////////////////////////////////////////// | |
87 | ||
88 | private: | |
ac3faee4 | 89 | |
90 | AliGenGeVSim(const AliGenGeVSim & ggs): AliGenerator(ggs) | |
91 | {Fatal("copy ctor","Not implemented\n");} | |
92 | AliGenGeVSim & operator=(const AliGenGeVSim & ggs) | |
93 | {Fatal("= operator","Not implemented\n"); return *this;} | |
94 | ||
7e4131fc | 95 | Int_t fModel; // Selected model (1-7) |
7816887f | 96 | Float_t fPsi; // Reaction Plane angle (0-2pi) |
7e4131fc | 97 | Bool_t fIsMultTotal; // Mode od multiplicity: total, dN/dY |
98 | ||
99 | TF1 *fPtFormula; //! Pt formula for model (1) | |
100 | TF1 *fYFormula; //! Y formula for model (1) | |
a3d75961 | 101 | TF2 *fPtYFormula[4]; //! Pt,Y formulae for model (2)-(4) |
7e4131fc | 102 | TF1 *fPhiFormula; //! phi formula |
4966b266 | 103 | |
7e4131fc | 104 | TFormula *fCurrentForm; //! currently used formula |
105 | TH1D *fHist[2]; //! two 1D histograms (fModel == 6) | |
106 | TH2D *fPtYHist; //! two-dimensional histogram (fModel == 7) | |
107 | ||
7816887f | 108 | TObjArray *fPartTypes; // Registered particles |
4966b266 | 109 | |
7e4131fc | 110 | void InitFormula(); |
111 | void SetFormula(Int_t pdg); | |
112 | void AdjustFormula(); | |
4966b266 | 113 | void DetermineReactionPlane(); |
7e4131fc | 114 | void GetRandomPtY(Double_t &pt, Double_t &y); |
115 | ||
116 | Float_t GetdNdYToTotal(); | |
7816887f | 117 | |
0af12c00 | 118 | Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi) const; // for histograms only |
7e4131fc | 119 | Bool_t CheckAcceptance(Float_t p[3]); |
4966b266 | 120 | |
7816887f | 121 | Float_t FindScaler(Int_t paramId, Int_t pdg); |
7816887f | 122 | |
7816887f | 123 | ///////////////////////////////////////////////////////////////// |
124 | ||
4966b266 | 125 | |
7e4131fc | 126 | ClassDef(AliGenGeVSim, 2) |
7816887f | 127 | |
128 | }; | |
129 | ||
130 | #endif |