ROOT logo
#ifndef ALIGENGEVSIM_H
#define ALIGENGEVSIM_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

////////////////////////////////////////////////////////////////////////////////
//
// AliGenGeVSim is a class implementing GeVSim event generator.
// 
// GeVSim is a simple Monte-Carlo event generator for testing detector and 
// algorythm performance especialy concerning flow and event-by-event studies
//
// In this event generator particles are generated from thermal distributions 
// without any dynamics and addicional constrains. Distribution parameters like
// multiplicity, particle type yields, inverse slope parameters, flow coeficients 
// and expansion velocities are expleicite defined by the user.
//
// GeVSim contains four thermal distributions the same as
// MevSim event generator developed for STAR experiment.
//
// In addition custom distributions can be used be the mean 
// either two dimensional formula (TF2), a two dimensional histogram or
// two one dimensional histograms.
//  
// Azimuthal distribution is deconvoluted from (Pt,Y) distribution
// and is described by two Fourier coefficients representing 
// Directed and Elliptic flow. 
// 
////////////////////////////////////////////////////////////////////////////////
//
// To apply flow to event ganerated by an arbitraly event generator
// refer to AliGenAfterBurnerFlow class.
//
////////////////////////////////////////////////////////////////////////////////
//
// For examples, parameters and testing macros refer to:
// http:/home.cern.ch/radomski
// 
// for more detailed description refer to ALICE NOTE
// "GeVSim Monte-Carlo Event Generator"
// S.Radosmki, P. Foka.
//  
// Author:
// Sylwester Radomski,
// GSI, March 2002
//  
// S.Radomski@gsi.de
//
////////////////////////////////////////////////////////////////////////////////
//
// Updated and revised: September 2002, S. Radomski, GSI
//
////////////////////////////////////////////////////////////////////////////////


class TFormula;
class TF1;
class TF2;
class TH1D;
class TH2D;
class TObjArray;
class AliGeVSimParticle;

#include "AliGenerator.h"


class AliGenGeVSim : public AliGenerator {

 public:
  
  AliGenGeVSim();
  AliGenGeVSim(Float_t psi, Bool_t isMultTotal = kTRUE);
  
  virtual ~AliGenGeVSim();
  
  /////////////////////////////////////////////////////////////////
  
  void AddParticleType(AliGeVSimParticle *part);
  void SetMultTotal(Bool_t isTotal = kTRUE);
  
  void Init();
  void Generate();
  
  /////////////////////////////////////////////////////////////////
  
 private:

  AliGenGeVSim(const AliGenGeVSim & ggs);
  AliGenGeVSim & operator=(const AliGenGeVSim & /*ggs*/);


  Int_t   fModel;            // Selected model (1-7)
  Float_t fPsi;              // Reaction Plane angle (0-2pi)
  Bool_t  fIsMultTotal;      // Mode od multiplicity: total, dN/dY

  TF1 *fPtFormula;           //! Pt formula for model (1)
  TF1 *fYFormula;            //! Y formula for model (1)
  TF2 *fPtYFormula[4];       //! Pt,Y formulae for model (2)-(4)
  TF1 *fPhiFormula;          //! phi formula 
  
  TFormula *fCurrentForm;    //! currently used formula
  TH1D *fHist[2];            //! two 1D histograms (fModel == 6)
  TH2D *fPtYHist;            //! two-dimensional histogram (fModel == 7)

  TObjArray *fPartTypes;     // Registered particles
  
  void InitFormula();
  void SetFormula(Int_t pdg);
  void AdjustFormula();
  void DetermineReactionPlane();
  void GetRandomPtY(Double_t &pt, Double_t &y);

  Float_t GetdNdYToTotal();
  
  Bool_t CheckPtYPhi(Float_t pt, Float_t y, Float_t phi) const;  // for histograms only
  Bool_t CheckAcceptance(Float_t p[3]);
  
  Float_t FindScaler(Int_t paramId, Int_t pdg);
  
  /////////////////////////////////////////////////////////////////


  ClassDef(AliGenGeVSim, 2)

};

#endif
 AliGenGeVSim.h:1
 AliGenGeVSim.h:2
 AliGenGeVSim.h:3
 AliGenGeVSim.h:4
 AliGenGeVSim.h:5
 AliGenGeVSim.h:6
 AliGenGeVSim.h:7
 AliGenGeVSim.h:8
 AliGenGeVSim.h:9
 AliGenGeVSim.h:10
 AliGenGeVSim.h:11
 AliGenGeVSim.h:12
 AliGenGeVSim.h:13
 AliGenGeVSim.h:14
 AliGenGeVSim.h:15
 AliGenGeVSim.h:16
 AliGenGeVSim.h:17
 AliGenGeVSim.h:18
 AliGenGeVSim.h:19
 AliGenGeVSim.h:20
 AliGenGeVSim.h:21
 AliGenGeVSim.h:22
 AliGenGeVSim.h:23
 AliGenGeVSim.h:24
 AliGenGeVSim.h:25
 AliGenGeVSim.h:26
 AliGenGeVSim.h:27
 AliGenGeVSim.h:28
 AliGenGeVSim.h:29
 AliGenGeVSim.h:30
 AliGenGeVSim.h:31
 AliGenGeVSim.h:32
 AliGenGeVSim.h:33
 AliGenGeVSim.h:34
 AliGenGeVSim.h:35
 AliGenGeVSim.h:36
 AliGenGeVSim.h:37
 AliGenGeVSim.h:38
 AliGenGeVSim.h:39
 AliGenGeVSim.h:40
 AliGenGeVSim.h:41
 AliGenGeVSim.h:42
 AliGenGeVSim.h:43
 AliGenGeVSim.h:44
 AliGenGeVSim.h:45
 AliGenGeVSim.h:46
 AliGenGeVSim.h:47
 AliGenGeVSim.h:48
 AliGenGeVSim.h:49
 AliGenGeVSim.h:50
 AliGenGeVSim.h:51
 AliGenGeVSim.h:52
 AliGenGeVSim.h:53
 AliGenGeVSim.h:54
 AliGenGeVSim.h:55
 AliGenGeVSim.h:56
 AliGenGeVSim.h:57
 AliGenGeVSim.h:58
 AliGenGeVSim.h:59
 AliGenGeVSim.h:60
 AliGenGeVSim.h:61
 AliGenGeVSim.h:62
 AliGenGeVSim.h:63
 AliGenGeVSim.h:64
 AliGenGeVSim.h:65
 AliGenGeVSim.h:66
 AliGenGeVSim.h:67
 AliGenGeVSim.h:68
 AliGenGeVSim.h:69
 AliGenGeVSim.h:70
 AliGenGeVSim.h:71
 AliGenGeVSim.h:72
 AliGenGeVSim.h:73
 AliGenGeVSim.h:74
 AliGenGeVSim.h:75
 AliGenGeVSim.h:76
 AliGenGeVSim.h:77
 AliGenGeVSim.h:78
 AliGenGeVSim.h:79
 AliGenGeVSim.h:80
 AliGenGeVSim.h:81
 AliGenGeVSim.h:82
 AliGenGeVSim.h:83
 AliGenGeVSim.h:84
 AliGenGeVSim.h:85
 AliGenGeVSim.h:86
 AliGenGeVSim.h:87
 AliGenGeVSim.h:88
 AliGenGeVSim.h:89
 AliGenGeVSim.h:90
 AliGenGeVSim.h:91
 AliGenGeVSim.h:92
 AliGenGeVSim.h:93
 AliGenGeVSim.h:94
 AliGenGeVSim.h:95
 AliGenGeVSim.h:96
 AliGenGeVSim.h:97
 AliGenGeVSim.h:98
 AliGenGeVSim.h:99
 AliGenGeVSim.h:100
 AliGenGeVSim.h:101
 AliGenGeVSim.h:102
 AliGenGeVSim.h:103
 AliGenGeVSim.h:104
 AliGenGeVSim.h:105
 AliGenGeVSim.h:106
 AliGenGeVSim.h:107
 AliGenGeVSim.h:108
 AliGenGeVSim.h:109
 AliGenGeVSim.h:110
 AliGenGeVSim.h:111
 AliGenGeVSim.h:112
 AliGenGeVSim.h:113
 AliGenGeVSim.h:114
 AliGenGeVSim.h:115
 AliGenGeVSim.h:116
 AliGenGeVSim.h:117
 AliGenGeVSim.h:118
 AliGenGeVSim.h:119
 AliGenGeVSim.h:120
 AliGenGeVSim.h:121
 AliGenGeVSim.h:122
 AliGenGeVSim.h:123
 AliGenGeVSim.h:124
 AliGenGeVSim.h:125
 AliGenGeVSim.h:126
 AliGenGeVSim.h:127
 AliGenGeVSim.h:128
 AliGenGeVSim.h:129