Updated version.
[u/mrichter/AliRoot.git] / EVGEN / AliGenGeVSim.h
CommitLineData
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
58class TFormula;
59class TF1;
60class TF2;
7e4131fc 61class TH1D;
62class TH2D;
4966b266 63class TObjArray;
64class AliGeVSimParticle;
7816887f 65
116cbefd 66#include "AliGenerator.h"
67
7816887f 68
69class 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
1c56e311 90 AliGenGeVSim(const AliGenGeVSim & ggs);
93a2041b 91 AliGenGeVSim & operator=(const AliGenGeVSim & /*ggs*/);
92
ac3faee4 93
7e4131fc 94 Int_t fModel; // Selected model (1-7)
7816887f 95 Float_t fPsi; // Reaction Plane angle (0-2pi)
7e4131fc 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)
a3d75961 100 TF2 *fPtYFormula[4]; //! Pt,Y formulae for model (2)-(4)
7e4131fc 101 TF1 *fPhiFormula; //! phi formula
4966b266 102
7e4131fc 103 TFormula *fCurrentForm; //! currently used formula
104 TH1D *fHist[2]; //! two 1D histograms (fModel == 6)
105 TH2D *fPtYHist; //! two-dimensional histogram (fModel == 7)
106
7816887f 107 TObjArray *fPartTypes; // Registered particles
4966b266 108
7e4131fc 109 void InitFormula();
110 void SetFormula(Int_t pdg);
111 void AdjustFormula();
4966b266 112 void DetermineReactionPlane();
7e4131fc 113 void GetRandomPtY(Double_t &pt, Double_t &y);
114
115 Float_t GetdNdYToTotal();
7816887f 116
0af12c00 117 Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi) const; // for histograms only
7e4131fc 118 Bool_t CheckAcceptance(Float_t p[3]);
4966b266 119
7816887f 120 Float_t FindScaler(Int_t paramId, Int_t pdg);
7816887f 121
7816887f 122 /////////////////////////////////////////////////////////////////
123
4966b266 124
7e4131fc 125 ClassDef(AliGenGeVSim, 2)
7816887f 126
127};
128
129#endif