3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 ////////////////////////////////////////////////////////////////////////////////
10 // AliGenGeVSim is a class implementing GeVSim event generator.
12 // GeVSim is a simple Monte-Carlo event generator for testing detector and
13 // algorythm performance especialy concerning flow and event-by-event studies
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.
20 // GeVSim contains four thermal distributions the same as
21 // MevSim event generator developed for STAR experiment.
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.
27 // Azimuthal distribution is deconvoluted from (Pt,Y) distribution
28 // and is described by two Fourier coefficients representing
29 // Directed and Elliptic flow.
31 ////////////////////////////////////////////////////////////////////////////////
33 // To apply flow to event ganerated by an arbitraly event generator
34 // refer to AliGenAfterBurnerFlow class.
36 ////////////////////////////////////////////////////////////////////////////////
38 // For examples, parameters and testing macros refer to:
39 // http:/home.cern.ch/radomski
41 // for more detailed description refer to ALICE NOTE
42 // "GeVSim Monte-Carlo Event Generator"
43 // S.Radosmki, P. Foka.
46 // Sylwester Radomski,
51 ////////////////////////////////////////////////////////////////////////////////
53 // Updated and revised: September 2002, S. Radomski, GSI
55 ////////////////////////////////////////////////////////////////////////////////
64 class AliGeVSimParticle;
66 #include "AliGenerator.h"
69 class AliGenGeVSim : public AliGenerator {
74 AliGenGeVSim(Float_t psi, Bool_t isMultTotal = kTRUE);
76 virtual ~AliGenGeVSim();
78 /////////////////////////////////////////////////////////////////
80 void AddParticleType(AliGeVSimParticle *part);
81 void SetMultTotal(Bool_t isTotal = kTRUE);
86 /////////////////////////////////////////////////////////////////
90 AliGenGeVSim(const AliGenGeVSim & ggs);
91 AliGenGeVSim & operator=(const AliGenGeVSim & /*ggs*/);
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
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
103 TFormula *fCurrentForm; //! currently used formula
104 TH1D *fHist[2]; //! two 1D histograms (fModel == 6)
105 TH2D *fPtYHist; //! two-dimensional histogram (fModel == 7)
107 TObjArray *fPartTypes; // Registered particles
110 void SetFormula(Int_t pdg);
111 void AdjustFormula();
112 void DetermineReactionPlane();
113 void GetRandomPtY(Double_t &pt, Double_t &y);
115 Float_t GetdNdYToTotal();
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]);
120 Float_t FindScaler(Int_t paramId, Int_t pdg);
122 /////////////////////////////////////////////////////////////////
125 ClassDef(AliGenGeVSim, 2)