Coding Rule violations corrected.
[u/mrichter/AliRoot.git] / EVGEN / AliGeVSimParticle.h
1 #ifndef ALIGEVSIMPARTICLE_H
2 #define ALIGEVSIMPARTICLE_H
3
4 ////////////////////////////////////////////////////////////////////////////////
5 //
6 // AliGeVSimParticle is a helper class for GeVSim (AliGenGeVSim) event generator.
7 // An object of this class represents one particle type and contain 
8 // information about particle type thermal parameters.
9 //
10 ////////////////////////////////////////////////////////////////////////////////
11 //
12 // For examples, parameters and testing macros refer to:
13 // http:/home.cern.ch/radomski
14 // 
15 // for more detailed description refer to ALICE NOTE
16 // "GeVSim Monte-Carlo Event Generator"
17 // S.Radosmki, P. Foka.
18 //  
19 // Author:
20 // Sylwester Radomski,
21 // GSI, March 2002
22 //  
23 // S.Radomski@gsi.de
24 //
25 ////////////////////////////////////////////////////////////////////////////////
26 //
27 // Updated and revised: September 2002, S. Radomski, GSI
28 //
29 ////////////////////////////////////////////////////////////////////////////////
30
31
32 #include "TObject.h"
33
34 class AliGeVSimParticle : public TObject {
35
36  public:
37   
38   ////////////////////////////////////////////////////////////////////////////
39   
40   AliGeVSimParticle() {}
41   AliGeVSimParticle(Int_t pdg, Int_t model, Float_t multiplicity); 
42   AliGeVSimParticle(Int_t pdg, Int_t model, Float_t multiplicity, 
43                     Float_t T, Float_t dY = 1., Float_t exp=0.);
44   
45   ~AliGeVSimParticle() {}
46   
47   ////////////////////////////////////////////////////////////////////////////
48   
49   Int_t GetPdgCode() const {return fPDG;}
50   Int_t GetModel() const {return fModel;}
51
52   Float_t GetTemperature() const {return fT;}
53   Float_t GetSigmaY() const {return fSigmaY;}
54   Float_t GetExpansionVelocity() const {return fExpansion;}
55
56   void SetModel(Int_t model);
57   void SetTemperature(Float_t T) {fT = T;}
58   void SetSigmaY(Float_t sigma) {fSigmaY = sigma;}
59   void SetExpansionVelocity(Float_t vel) {fExpansion = vel;}
60   
61
62   // Multiplicity
63
64   void    SetMultiplicity(Float_t mult);
65   Float_t GetMultiplicity() {return fN;}
66
67   void   SetMultTotal(Bool_t isTotal = kTRUE);
68
69   Bool_t IsMultTotal() {return fMultTotal;}
70   Bool_t IsMultForced() {return fIsSetMult;}
71   
72   // Flow
73   
74   void SetDirectedSimple(Float_t v1);
75   void SetEllipticSimple(Float_t v2);
76
77   void SetDirectedParam(Float_t v11, Float_t v12=0, Float_t v13=1, Float_t v14=0);
78   void SetEllipticParam(Float_t v21, Float_t pTmax, Float_t v22=0.);
79   void SetEllipticOld(Float_t v21, Float_t v22, Float_t v23);
80
81   Bool_t IsFlowSimple();
82
83   Float_t GetDirectedFlow(Float_t pt, Float_t y);
84   Float_t GetEllipticFlow(Float_t pt, Float_t y);
85   
86   ////////////////////////////////////////////////////////////////////////////
87   
88  private:
89   
90   Int_t fPDG;            // Particle type code
91   Int_t fModel;          // Transverse momentum model
92
93   Float_t fN;            // Multiplicity (subject to scalling)
94   Bool_t  fMultTotal;    // multiplicity mode: Total or dN/dY
95   Bool_t  fIsSetMult;    // force multiplicity mode or use from AliGenGeVSim
96
97   Float_t fT;            // Slope Parameter (subject to scalling)
98   Float_t fSigmaY;       // Rapidity Width
99   Float_t fExpansion;    // Expansion Velocity in c units (subject to scalling)
100   
101   Float_t fV1[4];        // Directed Flow coefficient parameters
102   Float_t fV2[3];        // Elliptic Flow coefficient parameters
103   
104   Bool_t fIsDirectedSimple;  // indicate use constant value for directed (v1) 
105   Bool_t fIsEllipticSimple;  // indicate use constant value for elliptic (v2)
106   Bool_t fIsEllipticOld;     // linear / quadratical pT parametrisation
107
108  public:
109   
110   ClassDef(AliGeVSimParticle, 3)
111     
112 };
113
114 ////////////////////////////////////////////////////////////////////////////////
115
116 #endif