coding convention
[u/mrichter/AliRoot.git] / EVGEN / AliGenGeVSim.h
CommitLineData
7816887f 1#ifndef ALIGENGEVSIM_H
2#define ALIGENGEVSIM_H
3
4966b266 4////////////////////////////////////////////////////////////////////////////////
5//
7e4131fc 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
4966b266 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//
7e4131fc 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.
4966b266 22//
23// Azimuthal distribution is deconvoluted from (Pt,Y) distribution
24// and is described by two Fourier coefficients representing
7e4131fc 25// Directed and Elliptic flow.
4966b266 26//
7e4131fc 27////////////////////////////////////////////////////////////////////////////////
28//
4966b266 29// To apply flow to event ganerated by an arbitraly event generator
30// refer to AliGenAfterBurnerFlow class.
7e4131fc 31//
32////////////////////////////////////////////////////////////////////////////////
33//
4966b266 34// For examples, parameters and testing macros refer to:
35// http:/home.cern.ch/radomski
7e4131fc 36//
37// for more detailed description refer to ALICE NOTE
38// "GeVSim Monte-Carlo Event Generator"
39// S.Radosmki, P. Foka.
4966b266 40//
41// Author:
42// Sylwester Radomski,
43// GSI, March 2002
44//
45// S.Radomski@gsi.de
46//
47////////////////////////////////////////////////////////////////////////////////
7e4131fc 48//
49// Updated and revised: September 2002, S. Radomski, GSI
50//
51////////////////////////////////////////////////////////////////////////////////
52
4966b266 53
54class TFormula;
55class TF1;
56class TF2;
7e4131fc 57class TH1D;
58class TH2D;
4966b266 59class TObjArray;
60class AliGeVSimParticle;
7816887f 61
116cbefd 62#include "AliGenerator.h"
63
7816887f 64
65class AliGenGeVSim : public AliGenerator {
66
4966b266 67 public:
68
69 AliGenGeVSim();
7e4131fc 70 AliGenGeVSim(Float_t psi, Bool_t isMultTotal = kTRUE);
4966b266 71
72 virtual ~AliGenGeVSim();
73
74 /////////////////////////////////////////////////////////////////
75
76 void AddParticleType(AliGeVSimParticle *part);
7e4131fc 77 void SetMultTotal(Bool_t isTotal = kTRUE);
4966b266 78
79 void Init();
80 void Generate();
81
82 /////////////////////////////////////////////////////////////////
83
84 private:
85
7e4131fc 86 Int_t fModel; // Selected model (1-7)
7816887f 87 Float_t fPsi; // Reaction Plane angle (0-2pi)
7e4131fc 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)
a3d75961 92 TF2 *fPtYFormula[4]; //! Pt,Y formulae for model (2)-(4)
7e4131fc 93 TF1 *fPhiFormula; //! phi formula
4966b266 94
7e4131fc 95 TFormula *fCurrentForm; //! currently used formula
96 TH1D *fHist[2]; //! two 1D histograms (fModel == 6)
97 TH2D *fPtYHist; //! two-dimensional histogram (fModel == 7)
98
7816887f 99 TObjArray *fPartTypes; // Registered particles
4966b266 100
7e4131fc 101 void InitFormula();
102 void SetFormula(Int_t pdg);
103 void AdjustFormula();
4966b266 104 void DetermineReactionPlane();
7e4131fc 105 void GetRandomPtY(Double_t &pt, Double_t &y);
106
107 Float_t GetdNdYToTotal();
7816887f 108
7e4131fc 109 Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi); // for histograms only
110 Bool_t CheckAcceptance(Float_t p[3]);
4966b266 111
7816887f 112 Float_t FindScaler(Int_t paramId, Int_t pdg);
7816887f 113
7816887f 114 /////////////////////////////////////////////////////////////////
115
4966b266 116
7e4131fc 117 ClassDef(AliGenGeVSim, 2)
7816887f 118
119};
120
121#endif